wtf, please fix this tomorrow
This commit is contained in:
parent
320c2e98db
commit
664c2b9db0
6 changed files with 291 additions and 8 deletions
5
pom.xml
5
pom.xml
|
|
@ -52,6 +52,11 @@
|
||||||
<artifactId>slf4j-simple</artifactId>
|
<artifactId>slf4j-simple</artifactId>
|
||||||
<version>1.7.29</version>
|
<version>1.7.29</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>club.minnced</groupId>
|
||||||
|
<artifactId>discord-webhooks</artifactId>
|
||||||
|
<version>0.1.8</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<repositories>
|
<repositories>
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,8 @@ public class Hadder {
|
||||||
new BoobsCommand(),
|
new BoobsCommand(),
|
||||||
new FeetCommand(),
|
new FeetCommand(),
|
||||||
new EroticCommand(),
|
new EroticCommand(),
|
||||||
new RoleCommand()), config);
|
new RoleCommand(),
|
||||||
|
new LinkCommand()), config);
|
||||||
|
|
||||||
builder.addEventListeners(
|
builder.addEventListeners(
|
||||||
new MentionListener(rethink),
|
new MentionListener(rethink),
|
||||||
|
|
|
||||||
|
|
@ -54,14 +54,14 @@ public class Rethink {
|
||||||
return new JSONArray();
|
return new JSONArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String get(String table, String where, String value, String column) {
|
private Object get(String table, String where, String value, String column) {
|
||||||
return this.getAsArray(table, where, value).getJSONObject(0).getString(column);
|
return this.getAsArray(table, where, value).getJSONObject(0).get(column);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String update(String table, String whatvalue, String where, String wherevalue) {
|
private String update(String table, String wherevalue, String what, String whatvalue) {
|
||||||
String out="";
|
String out="";
|
||||||
try {
|
try {
|
||||||
Cursor cursor = r.table(table).get(whatvalue).update(r.hashMap(where, wherevalue)).run(conn);
|
Cursor cursor = r.table(table).get(wherevalue).update(r.hashMap(what, whatvalue)).run(conn);
|
||||||
out=cursor.toString();
|
out=cursor.toString();
|
||||||
} catch (ClassCastException ignored) {}
|
} catch (ClassCastException ignored) {}
|
||||||
return out;
|
return out;
|
||||||
|
|
@ -100,7 +100,7 @@ public class Rethink {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getUserPrefix(String id) {
|
public String getUserPrefix(String id) {
|
||||||
return this.get("user", "id", id, "prefix");
|
return (String) this.get("user", "id", id, "prefix");
|
||||||
}
|
}
|
||||||
|
|
||||||
public String setGuildPrefix(String prefix, String guildid) {
|
public String setGuildPrefix(String prefix, String guildid) {
|
||||||
|
|
@ -108,11 +108,38 @@ public class Rethink {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getGuildPrefix(String id) {
|
public String getGuildPrefix(String id) {
|
||||||
return this.get("server", "id", id, "prefix");
|
return (String) this.get("server", "id", id, "prefix");
|
||||||
|
}
|
||||||
|
|
||||||
|
public JSONArray getLinks(String id) {
|
||||||
|
return new JSONArray((String) this.get("server", "id", id, "links"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String addLinkedGuild(String guildid, String linkid) {
|
||||||
|
return this.update("server", guildid, "links", this.getLinks(guildid).put(linkid).toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public String removeLinkedGuild(String guildid, String linkid) {
|
||||||
|
JSONArray linkedguildslist = this.getLinks(guildid);
|
||||||
|
for (int i = 0; linkedguildslist.length()>i; i++) {
|
||||||
|
if (linkedguildslist.getString(i).equals(linkid)) {
|
||||||
|
linkedguildslist.remove(i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this.update("server", guildid, "links", linkedguildslist.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public String setLinkChannel(String guildid, String channelid) {
|
||||||
|
return this.update("server", guildid, "linkchannel", channelid);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLinkChannel(String guildid) {
|
||||||
|
return (String) this.get("server", "id", guildid, "linkchannel");
|
||||||
}
|
}
|
||||||
|
|
||||||
public String insertGuild(String id) {
|
public String insertGuild(String id) {
|
||||||
return this.insert("server", r.hashMap("id", id).with("prefix", "h."));
|
return this.insert("server", r.hashMap("id", id).with("prefix", "h.").with("links", "[]").with("linkchannel", ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String insertUser(String id) {
|
public String insertUser(String id) {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,116 @@
|
||||||
|
package com.bbn.hadder.commands.moderation;
|
||||||
|
|
||||||
|
import com.bbn.hadder.commands.Command;
|
||||||
|
import com.bbn.hadder.commands.CommandEvent;
|
||||||
|
import com.bbn.hadder.utils.MessageEditor;
|
||||||
|
import net.dv8tion.jda.api.EmbedBuilder;
|
||||||
|
import net.dv8tion.jda.api.entities.Guild;
|
||||||
|
import net.dv8tion.jda.api.entities.TextChannel;
|
||||||
|
import org.json.JSONArray;
|
||||||
|
|
||||||
|
public class LinkCommand implements Command {
|
||||||
|
@Override
|
||||||
|
public void executed(String[] args, CommandEvent event) {
|
||||||
|
if (args.length==0) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
switch (args[0].toLowerCase()) {
|
||||||
|
case "add":
|
||||||
|
if (args.length==2) {
|
||||||
|
boolean found = false;
|
||||||
|
for (Guild g :event.getJDA().getGuilds()) {
|
||||||
|
if (g.getId().equals(args[1])) found = true;
|
||||||
|
}
|
||||||
|
if (!found) {
|
||||||
|
event.getChannel().sendMessage(
|
||||||
|
new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR, new EmbedBuilder()
|
||||||
|
.setTitle("I'm not on this guild")
|
||||||
|
.setDescription("I'm not on this guild. Please tell the Server Owner to add me.")).build()).queue();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
JSONArray linkedguildids = event.getRethink().getLinks(event.getGuild().getId());
|
||||||
|
for (int i = 0; linkedguildids.length() > i; i++) {
|
||||||
|
if (linkedguildids.getString(i).equals(args[1])) {
|
||||||
|
event.getChannel().sendMessage(
|
||||||
|
new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR, new EmbedBuilder()
|
||||||
|
.setTitle("Already Linked with that Guild!")
|
||||||
|
.setDescription("Your Guild is already linked with " + event.getJDA().getGuildById(args[1]).getName())).build()).queue();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Fix this
|
||||||
|
// TODO: Add poll to accept
|
||||||
|
for (int i = 0; linkedguildids.length() > i; i++) {
|
||||||
|
// TODO: Check if any channel exists else create
|
||||||
|
event.getJDA().getTextChannelById(event.getRethink().getLinkChannel(linkedguildids.getString(i))).sendMessage(
|
||||||
|
new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder()
|
||||||
|
.setTitle("A Guild wants to link the Guilds")
|
||||||
|
.setDescription("The Guild "+event.getGuild().getName()+" want to link!")
|
||||||
|
.setFooter("Request by: "+event.getGuild().getId()+ " To:"+linkedguildids.getString(i))).build()).queue(
|
||||||
|
msg -> {
|
||||||
|
msg.addReaction("✅").queue();
|
||||||
|
msg.addReaction("❌").queue();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// TODO: Success Message
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "remove":
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "list":
|
||||||
|
JSONArray linkedguildids = event.getRethink().getLinks(event.getGuild().getId());
|
||||||
|
String response;
|
||||||
|
if (linkedguildids.length()==0) response = "There are no Guilds linked.";
|
||||||
|
else {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (int i = 0; linkedguildids.length()>i; i++) {
|
||||||
|
String id = linkedguildids.getString(i);
|
||||||
|
Guild guild = event.getJDA().getGuildById(id);
|
||||||
|
sb.append(guild.getName()+" ("+id+")\n");
|
||||||
|
}
|
||||||
|
response = sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
event.getChannel().sendMessage(
|
||||||
|
new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO,
|
||||||
|
new EmbedBuilder().setTitle("Linked Guilds").setDescription(response)).build()).queue();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "channel":
|
||||||
|
if (args.length==2) {
|
||||||
|
for (TextChannel tc : event.getJDA().getTextChannels()) {
|
||||||
|
if (tc.getId().equals(args[1])) {
|
||||||
|
event.getRethink().setLinkChannel(event.getGuild().getId(), args[1]);
|
||||||
|
event.getChannel().sendMessage(
|
||||||
|
new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder()
|
||||||
|
.setTitle("Successfully set the text channel as your link channel")
|
||||||
|
.setDescription("The new Channel receives all new messages")).build()).queue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] labels() {
|
||||||
|
return new String[]{"link"};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String description() {
|
||||||
|
return "Links two or more servers.";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String usage() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
75
src/main/java/com/bbn/hadder/core/LinkUtils.java
Normal file
75
src/main/java/com/bbn/hadder/core/LinkUtils.java
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
package com.bbn.hadder.core;
|
||||||
|
|
||||||
|
import club.minnced.discord.webhook.WebhookClient;
|
||||||
|
import club.minnced.discord.webhook.WebhookClientBuilder;
|
||||||
|
import club.minnced.discord.webhook.send.WebhookEmbed;
|
||||||
|
import club.minnced.discord.webhook.send.WebhookEmbedBuilder;
|
||||||
|
import club.minnced.discord.webhook.send.WebhookMessageBuilder;
|
||||||
|
import net.dv8tion.jda.api.EmbedBuilder;
|
||||||
|
import net.dv8tion.jda.api.JDA;
|
||||||
|
import net.dv8tion.jda.api.entities.*;
|
||||||
|
import org.json.JSONArray;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
|
public class LinkUtils {
|
||||||
|
|
||||||
|
public void sendAll(JSONArray jsonArray, JDA jda, Message message, User user) {
|
||||||
|
for (int i = 0; jsonArray.length() > i; i++) {
|
||||||
|
this.send(message, jda.getTextChannelById(jsonArray.getString(i)), user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void send(Message message, TextChannel channel, User user) {
|
||||||
|
|
||||||
|
channel.retrieveWebhooks().queue(
|
||||||
|
webhooks -> {
|
||||||
|
Webhook webhook=null;
|
||||||
|
for (Webhook webhooktemp : webhooks) {
|
||||||
|
if (webhooktemp.getOwner().equals(channel.getJDA().getSelfUser())) {
|
||||||
|
webhook=webhooktemp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (webhook==null) {
|
||||||
|
channel.createWebhook("Hadder GuildLink").queue(
|
||||||
|
webhook1 -> sendMessage(webhook1, user, message)
|
||||||
|
);
|
||||||
|
} else sendMessage(webhook, user, message);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendMessage(Webhook webhook, User user, Message message) {
|
||||||
|
WebhookClientBuilder builder = new WebhookClientBuilder(webhook.getId());
|
||||||
|
WebhookClient client = builder.build();
|
||||||
|
WebhookMessageBuilder mb = new WebhookMessageBuilder();
|
||||||
|
mb.setUsername(user.getName())
|
||||||
|
.setAvatarUrl((user.getAvatarUrl()!=null) ? user.getAvatarUrl() : user.getDefaultAvatarUrl())
|
||||||
|
.setContent(message.getContentRaw());
|
||||||
|
for (Message.Attachment attachment:message.getAttachments()) {
|
||||||
|
try {
|
||||||
|
mb.addFile(attachment.getFileName(), attachment.retrieveInputStream().get());
|
||||||
|
} catch (InterruptedException | ExecutionException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (MessageEmbed embed : message.getEmbeds()) {
|
||||||
|
List<WebhookEmbed.EmbedField> fields = new ArrayList<>();
|
||||||
|
for (MessageEmbed.Field field : embed.getFields()) {
|
||||||
|
fields.add(new WebhookEmbed.EmbedField(field.isInline(), field.getName(), field.getValue()));
|
||||||
|
}
|
||||||
|
mb.addEmbeds(new WebhookEmbed(
|
||||||
|
embed.getTimestamp(), embed.getColorRaw(), embed.getDescription(),
|
||||||
|
embed.getThumbnail().getUrl(), embed.getImage().getUrl(), new WebhookEmbed.EmbedFooter(embed.getFooter().getText(), embed.getFooter().getIconUrl()),
|
||||||
|
new WebhookEmbed.EmbedTitle(embed.getTitle(), embed.getUrl()),
|
||||||
|
new WebhookEmbed.EmbedAuthor(embed.getAuthor().getName(), embed.getAuthor().getIconUrl(), embed.getAuthor().getUrl()), fields));
|
||||||
|
}
|
||||||
|
client.send(mb.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
59
src/main/java/com/bbn/hadder/listener/LinkListener.java
Normal file
59
src/main/java/com/bbn/hadder/listener/LinkListener.java
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
package com.bbn.hadder.listener;
|
||||||
|
|
||||||
|
import com.bbn.hadder.Rethink;
|
||||||
|
import com.bbn.hadder.core.LinkUtils;
|
||||||
|
import com.bbn.hadder.utils.MessageEditor;
|
||||||
|
import net.dv8tion.jda.api.EmbedBuilder;
|
||||||
|
import net.dv8tion.jda.api.MessageBuilder;
|
||||||
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
|
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||||
|
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
|
||||||
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
|
import org.json.JSONArray;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
public class LinkListener extends ListenerAdapter {
|
||||||
|
|
||||||
|
Rethink rethink;
|
||||||
|
|
||||||
|
public LinkListener(Rethink rethink) {
|
||||||
|
this.rethink = rethink;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMessageReactionAdd(@Nonnull MessageReactionAddEvent event) {
|
||||||
|
if (event.isFromGuild()) {
|
||||||
|
event.getTextChannel().retrieveMessageById(event.getMessageId()).queue(
|
||||||
|
msg -> {
|
||||||
|
if (msg.getAuthor().equals(event.getJDA().getSelfUser())) {
|
||||||
|
if (msg.getEmbeds().size() == 1) {
|
||||||
|
String footer = msg.getEmbeds().get(0).getFooter().getText();
|
||||||
|
if (footer!=null) {
|
||||||
|
if (footer.startsWith("Request by: ")&&footer.contains(" To:")) {
|
||||||
|
String[] ids = footer.replace("Request by: ", "").replace("To:", "").split(" ");
|
||||||
|
JSONArray jsonArray = rethink.getLinks(ids[0]);
|
||||||
|
for (int i = 0; jsonArray.length()>i; i++) {
|
||||||
|
rethink.addLinkedGuild(jsonArray.getString(i), ids[1]);
|
||||||
|
rethink.addLinkedGuild(ids[1], jsonArray.getString(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
rethink.addLinkedGuild(ids[0], ids[1]);
|
||||||
|
|
||||||
|
new LinkUtils().sendAll(rethink.getLinks(event.getGuild().getId()), event.getJDA(),
|
||||||
|
new MessageBuilder().setEmbed(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO,
|
||||||
|
new EmbedBuilder().setTitle(event.getGuild().getName()+" just joined the link!").setDescription("Say Hello!")).build()).build(), event.getJDA().getSelfUser());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue