From bc151bbbb793e435f91cd66d0308b5c6c82640c4 Mon Sep 17 00:00:00 2001 From: GregTCLTK Date: Mon, 18 Nov 2019 14:50:53 +0100 Subject: [PATCH 1/7] Annoying --- .gitignore | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index c8c1f71..a44909c 100644 --- a/.gitignore +++ b/.gitignore @@ -22,11 +22,10 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* +# IDE Files .idea/ - -.settings/ - .vscode/ +.settings/ config.json From 664c2b9db0141935f33a10b71a6b4817598b2140 Mon Sep 17 00:00:00 2001 From: Hax Date: Tue, 19 Nov 2019 23:50:13 +0100 Subject: [PATCH 2/7] wtf, please fix this tomorrow --- pom.xml | 5 + src/main/java/com/bbn/hadder/Hadder.java | 3 +- src/main/java/com/bbn/hadder/Rethink.java | 41 +++++-- .../commands/moderation/LinkCommand.java | 116 ++++++++++++++++++ .../java/com/bbn/hadder/core/LinkUtils.java | 75 +++++++++++ .../com/bbn/hadder/listener/LinkListener.java | 59 +++++++++ 6 files changed, 291 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java create mode 100644 src/main/java/com/bbn/hadder/core/LinkUtils.java create mode 100644 src/main/java/com/bbn/hadder/listener/LinkListener.java diff --git a/pom.xml b/pom.xml index 7afe0e1..c3021ff 100644 --- a/pom.xml +++ b/pom.xml @@ -52,6 +52,11 @@ slf4j-simple 1.7.29 + + club.minnced + discord-webhooks + 0.1.8 + diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index 292dee8..335efc4 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -66,7 +66,8 @@ public class Hadder { new BoobsCommand(), new FeetCommand(), new EroticCommand(), - new RoleCommand()), config); + new RoleCommand(), + new LinkCommand()), config); builder.addEventListeners( new MentionListener(rethink), diff --git a/src/main/java/com/bbn/hadder/Rethink.java b/src/main/java/com/bbn/hadder/Rethink.java index ba6a03e..da6602d 100644 --- a/src/main/java/com/bbn/hadder/Rethink.java +++ b/src/main/java/com/bbn/hadder/Rethink.java @@ -54,14 +54,14 @@ public class Rethink { return new JSONArray(); } - private String get(String table, String where, String value, String column) { - return this.getAsArray(table, where, value).getJSONObject(0).getString(column); + private Object get(String table, String where, String value, String 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=""; 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(); } catch (ClassCastException ignored) {} return out; @@ -100,7 +100,7 @@ public class Rethink { } 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) { @@ -108,11 +108,38 @@ public class Rethink { } 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) { - 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) { diff --git a/src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java new file mode 100644 index 0000000..3bae54f --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java @@ -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 ""; + } +} diff --git a/src/main/java/com/bbn/hadder/core/LinkUtils.java b/src/main/java/com/bbn/hadder/core/LinkUtils.java new file mode 100644 index 0000000..fa89f6c --- /dev/null +++ b/src/main/java/com/bbn/hadder/core/LinkUtils.java @@ -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 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()); + } + +} diff --git a/src/main/java/com/bbn/hadder/listener/LinkListener.java b/src/main/java/com/bbn/hadder/listener/LinkListener.java new file mode 100644 index 0000000..a7f8498 --- /dev/null +++ b/src/main/java/com/bbn/hadder/listener/LinkListener.java @@ -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 + } +} From c680b6a9033b806dd91554e40723e1b20a00fa06 Mon Sep 17 00:00:00 2001 From: Hax Date: Wed, 20 Nov 2019 15:25:19 +0100 Subject: [PATCH 3/7] It's rewind time everybody --- .../commands/moderation/LinkCommand.java | 139 ++++++++---------- .../java/com/bbn/hadder/core/LinkUtils.java | 27 +++- .../com/bbn/hadder/listener/LinkListener.java | 32 ---- 3 files changed, 80 insertions(+), 118 deletions(-) diff --git a/src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java index 3bae54f..925cf46 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/LinkCommand.java @@ -2,100 +2,81 @@ package com.bbn.hadder.commands.moderation; import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.CommandEvent; +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.Guild; -import net.dv8tion.jda.api.entities.TextChannel; -import org.json.JSONArray; +import net.dv8tion.jda.api.entities.MessageReaction; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class LinkCommand implements Command { @Override public void executed(String[] args, CommandEvent event) { - if (args.length==0) { + if (args.length == 0) return; + switch (args[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; - } - } + case "add": + if (args.length != 2) return; + String linkid = args[1]; - // 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(); + // Check if guild is existing + boolean found = false; + Guild linkguild = null; + for (Guild g : event.getJDA().getGuilds()) { + if (g.getId().equals(linkid)) { + found = true; + linkguild = g; } + } + // TODO + if (!found) return; + // Check if the guild is the same + if (event.getGuild().getId().equals(args[1])) { event.getChannel().sendMessage( - new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, - new EmbedBuilder().setTitle("Linked Guilds").setDescription(response)).build()).queue(); - break; + new MessageEditor().setDefaultSettings(MessageEditor.MessageType.ERROR, + new EmbedBuilder().setTitle("Wait thats illegal.").setDescription("You specified the same guild as the guild on which you're reading this")).build()).queue(); + return; + } - 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(); - } + // Send poll to all connected guilds + if (event.getRethink().getLinks(event.getGuild().getId()).length() > 0) { + List reactions = new ArrayList<>(); + reactions.addAll(Arrays.asList("✅", "❌")); + new LinkUtils().sendAll( + event.getRethink().getLinks(event.getGuild().getId()), event.getJDA(), + new MessageBuilder() + .setEmbed( + new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, + new EmbedBuilder() + .setTitle(event.getGuild().getName() + " (" + event.getGuild().getId() + ") wants to add " + linkguild.getName() + " (" + linkguild.getId() + ")") + .setDescription("Please vote if the Guild should be added.")).build()).build(), + event.getJDA().getSelfUser(), reactions); + } else { + Guild finalLinkguild = linkguild; + new Thread(() -> { + if (event.getRethink().getLinkChannel(linkid).isEmpty()) { + event.getRethink().setLinkChannel(linkid, finalLinkguild.createTextChannel("linkchannel").complete().getId()); } + // Send Request to link Guild + event.getJDA().getTextChannelById(event.getRethink().getLinkChannel(linkid)).sendMessage( + new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, + new EmbedBuilder().setTitle(event.getGuild().getName() + " (" + event.getGuild().getId() + ") wants to link guilds!") + .setDescription("React with the reactions to accept or decline it")).build() + ).queue( + msg -> { + msg.addReaction("✅").queue(); + msg.addReaction("❌").queue(); + } + ); + }).start(); + } - } - break; - } + break; } } diff --git a/src/main/java/com/bbn/hadder/core/LinkUtils.java b/src/main/java/com/bbn/hadder/core/LinkUtils.java index fa89f6c..216c148 100644 --- a/src/main/java/com/bbn/hadder/core/LinkUtils.java +++ b/src/main/java/com/bbn/hadder/core/LinkUtils.java @@ -16,13 +16,13 @@ import java.util.concurrent.ExecutionException; public class LinkUtils { - public void sendAll(JSONArray jsonArray, JDA jda, Message message, User user) { + public void sendAll(JSONArray jsonArray, JDA jda, Message message, User user, List reactions) { for (int i = 0; jsonArray.length() > i; i++) { - this.send(message, jda.getTextChannelById(jsonArray.getString(i)), user); + this.send(message, jda.getTextChannelById(jsonArray.getString(i)), user, reactions); } } - private void send(Message message, TextChannel channel, User user) { + private void send(Message message, TextChannel channel, User user, List reactions) { channel.retrieveWebhooks().queue( webhooks -> { @@ -35,16 +35,16 @@ public class LinkUtils { if (webhook==null) { channel.createWebhook("Hadder GuildLink").queue( - webhook1 -> sendMessage(webhook1, user, message) + webhook1 -> sendMessage(webhook1, channel, user, message, reactions) ); - } else sendMessage(webhook, user, message); + } else sendMessage(webhook, channel, user, message, reactions); } ); } - private void sendMessage(Webhook webhook, User user, Message message) { + private void sendMessage(Webhook webhook, TextChannel channel, User user, Message message, List reactions) { WebhookClientBuilder builder = new WebhookClientBuilder(webhook.getId()); WebhookClient client = builder.build(); WebhookMessageBuilder mb = new WebhookMessageBuilder(); @@ -69,7 +69,20 @@ public class LinkUtils { new WebhookEmbed.EmbedTitle(embed.getTitle(), embed.getUrl()), new WebhookEmbed.EmbedAuthor(embed.getAuthor().getName(), embed.getAuthor().getIconUrl(), embed.getAuthor().getUrl()), fields)); } - client.send(mb.build()); + try { + long msgid = client.send(mb.build()).get().getId(); + channel.retrieveMessageById(msgid).queue( + msg -> { + for (String reaction: reactions) { + msg.addReaction(reaction).queue(); + } + } + ); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } } } diff --git a/src/main/java/com/bbn/hadder/listener/LinkListener.java b/src/main/java/com/bbn/hadder/listener/LinkListener.java index a7f8498..224e529 100644 --- a/src/main/java/com/bbn/hadder/listener/LinkListener.java +++ b/src/main/java/com/bbn/hadder/listener/LinkListener.java @@ -1,15 +1,9 @@ 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; @@ -23,33 +17,7 @@ public class LinkListener extends ListenerAdapter { @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 From a72ed14cc5d7d391bfc189a8b0266efcbeff7296 Mon Sep 17 00:00:00 2001 From: GregTCLTK Date: Wed, 20 Nov 2019 07:52:05 -0800 Subject: [PATCH 4/7] Remove --- src/main/java/com/bbn/hadder/commands/owner/TestCommand.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/com/bbn/hadder/commands/owner/TestCommand.java b/src/main/java/com/bbn/hadder/commands/owner/TestCommand.java index 061b67d..e50a638 100644 --- a/src/main/java/com/bbn/hadder/commands/owner/TestCommand.java +++ b/src/main/java/com/bbn/hadder/commands/owner/TestCommand.java @@ -2,9 +2,6 @@ package com.bbn.hadder.commands.owner; import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.CommandEvent; -import net.dv8tion.jda.api.entities.Activity; - -import java.util.Arrays; /* * @author Skidder / GregTCLTK From 0a04c8185f3501a34c670cad492e411af75fcfb8 Mon Sep 17 00:00:00 2001 From: GregTCLTK Date: Wed, 20 Nov 2019 09:58:27 -0800 Subject: [PATCH 5/7] Rules Command 1/? --- src/main/java/com/bbn/hadder/Hadder.java | 3 +- .../commands/moderation/RulesCommand.java | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index 335efc4..efb1536 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -67,8 +67,9 @@ public class Hadder { new FeetCommand(), new EroticCommand(), new RoleCommand(), + new RulesCommand(), new LinkCommand()), config); - + builder.addEventListeners( new MentionListener(rethink), new PrivateMessageListener(), diff --git a/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java new file mode 100644 index 0000000..6bf5113 --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java @@ -0,0 +1,31 @@ +package com.bbn.hadder.commands.moderation; + +/* + * @author Skidder / GregTCLTK + */ + +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.commands.CommandEvent; + +public class RulesCommand implements Command { + + @Override + public void executed(String[] args, CommandEvent event) { + + } + + @Override + public String[] labels() { + return new String[]{"rules"}; + } + + @Override + public String description() { + return "Setup the rules on your server"; + } + + @Override + public String usage() { + return ""; + } +} From 450253106c6b0c78a3937160943ad8017642594c Mon Sep 17 00:00:00 2001 From: GregTCLTK Date: Wed, 20 Nov 2019 10:16:23 -0800 Subject: [PATCH 6/7] Perms check --- .../hadder/commands/moderation/RulesCommand.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java index 6bf5113..be84b17 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java @@ -6,12 +6,26 @@ 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.Permission; public class RulesCommand implements Command { @Override public void executed(String[] args, CommandEvent event) { + if (event.getMember().hasPermission(Permission.MANAGE_SERVER)) { + if (event.getGuild().getSelfMember().hasPermission(Permission.MANAGE_ROLES)) { + + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_SELF_PERMISSION, builder).build()).queue(); + } + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_PERMISSION, builder).build()).queue(); + } } @Override @@ -21,7 +35,7 @@ public class RulesCommand implements Command { @Override public String description() { - return "Setup the rules on your server"; + return "Setup the rules on your Discord server"; } @Override From 455017999406cfaadc799b1d647c65da968562f3 Mon Sep 17 00:00:00 2001 From: GregTCLTK Date: Wed, 20 Nov 2019 11:55:31 -0800 Subject: [PATCH 7/7] Very very bad Rules Command. I'll fix this later --- src/main/java/com/bbn/hadder/Hadder.java | 1 + src/main/java/com/bbn/hadder/Rethink.java | 16 ++++++- .../commands/moderation/RulesCommand.java | 42 ++++++++++++++++++- .../bbn/hadder/listener/RulesListener.java | 25 +++++++++++ 4 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/bbn/hadder/listener/RulesListener.java diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index efb1536..f44cf0e 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -75,6 +75,7 @@ public class Hadder { new PrivateMessageListener(), new CommandListener(rethink, commandHandler), new GuildListener(rethink, config), + new RulesListener(rethink), new ReadyListener(rethink, config)); try { diff --git a/src/main/java/com/bbn/hadder/Rethink.java b/src/main/java/com/bbn/hadder/Rethink.java index da6602d..c2165b9 100644 --- a/src/main/java/com/bbn/hadder/Rethink.java +++ b/src/main/java/com/bbn/hadder/Rethink.java @@ -139,11 +139,25 @@ public class Rethink { } public String insertGuild(String id) { - return this.insert("server", r.hashMap("id", id).with("prefix", "h.").with("links", "[]").with("linkchannel", "")); + return this.insert("server", r.hashMap("id", id).with("prefix", "h.").with("links", "[]").with("linkchannel", "").with("message_id", "").with("role_id", "")); } public String insertUser(String id) { return this.insert("user", r.hashMap("id", id).with("prefix", "h.")); } + public String updateRules(String guild_id, String message_id, String role_id) { + this.update("server", guild_id, "message_id", message_id); + this.update("server", guild_id, "role_id", role_id); + return null; + } + + public String getRulesMID(String guild_id) { + return (String) this.get("server", "id", guild_id, "message_id"); + } + + public String getRulesRID(String guild_id) { + return (String) this.get("server", "id", guild_id, "role_id"); + } + } diff --git a/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java index be84b17..ef656ed 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/RulesCommand.java @@ -6,9 +6,11 @@ package com.bbn.hadder.commands.moderation; import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.utils.EventWaiter; import com.bbn.hadder.utils.MessageEditor; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.Permission; +import net.dv8tion.jda.api.entities.Message; public class RulesCommand implements Command { @@ -16,8 +18,46 @@ public class RulesCommand implements Command { public void executed(String[] args, CommandEvent event) { if (event.getMember().hasPermission(Permission.MANAGE_SERVER)) { if (event.getGuild().getSelfMember().hasPermission(Permission.MANAGE_ROLES)) { + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() + .setTitle("Rules setup") + .setDescription("Please mention the channel în which I should send the rules. This should look like #rules.")) + .build()).queue(); - + new EventWaiter().newOnMessageEventWaiter(msgevent -> { + if (msgevent.getMessage().getMentionedChannels().size() > 0) { + msgevent.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() + .setTitle("Rules") + .setDescription("Now please send me the rules.")) + .build()).queue(); + new EventWaiter().newOnMessageEventWaiter(msgevent2 -> { + msgevent2.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() + .setTitle("Role to assign")) + .setDescription("Now please send me the name of the role which the user will get after he accepted the rules.") + .build()).queue(); + new EventWaiter().newOnMessageEventWaiter(msgevent3 -> { + try { + msgevent3.getGuild().getRolesByName(msgevent3.getMessage().getContentRaw(), false).get(0); + msgevent3.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder().setTitle("Successfully set the rules")).build()).queue(); + Message rules = msgevent.getMessage().getMentionedChannels().get(0).sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() + .setTitle("Rules")) + .setDescription(msgevent2.getMessage().getContentDisplay()) + .build()).complete(); + rules.addReaction("✅").queue(); + rules.addReaction("❌").queue(); + + event.getRethink().updateRules(event.getGuild().getId(), rules.getId(), msgevent3.getGuild().getRolesByName(msgevent3.getMessage().getContentRaw(), false).get(0).getId()); + } catch (Exception e) { + e.printStackTrace(); + } + }, event.getJDA(), event.getAuthor()); + }, event.getJDA(), event.getAuthor()); + } else { + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, new EmbedBuilder() + .setTitle("No Channel mentioned")) + .setDescription("Please mention a channel. This should look like #rules") + .build()).queue(); + } + }, event.getJDA(), event.getAuthor()); } else { EmbedBuilder builder = new EmbedBuilder(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_SELF_PERMISSION, builder).build()).queue(); diff --git a/src/main/java/com/bbn/hadder/listener/RulesListener.java b/src/main/java/com/bbn/hadder/listener/RulesListener.java new file mode 100644 index 0000000..0d9bfb1 --- /dev/null +++ b/src/main/java/com/bbn/hadder/listener/RulesListener.java @@ -0,0 +1,25 @@ +package com.bbn.hadder.listener; + +/* + * @author Skidder / GregTCLTK + */ + +import com.bbn.hadder.Rethink; +import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent; +import net.dv8tion.jda.api.hooks.ListenerAdapter; + +public class RulesListener extends ListenerAdapter { + + private Rethink rethink; + + public RulesListener(Rethink rethink) { + this.rethink = rethink; + } + + @Override + public void onMessageReactionAdd(MessageReactionAddEvent event) { + if (event.getMessageId().equals(rethink.getRulesMID(event.getGuild().getId()))) { + event.getGuild().addRoleToMember(event.getMember(), event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId()))).queue(); + } + } +}