From 455017999406cfaadc799b1d647c65da968562f3 Mon Sep 17 00:00:00 2001 From: GregTCLTK Date: Wed, 20 Nov 2019 11:55:31 -0800 Subject: [PATCH] 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(); + } + } +}