From 18d9b8ccfc60f62c934bf2d4457e0e93b18bf9d8 Mon Sep 17 00:00:00 2001 From: Greg TK <33130539+GregTCLTK@users.noreply.github.com> Date: Fri, 25 Oct 2019 12:01:33 +0200 Subject: [PATCH 1/2] Create FUNDING.yml --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..17bd127 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +custom: https://donatebot.io/checkout/448554629282922527 -- 2.45.3 From 1ca1d504fe76f65db71d437826509ceba9906616 Mon Sep 17 00:00:00 2001 From: GregTCLTK Date: Sat, 26 Oct 2019 23:59:45 +0200 Subject: [PATCH 2/2] Command stuff and Ban/Test Command --- .../Translations/DE_TRANSLATION.properties | 0 .../Translations/EN_TRANSLATION.properties | 0 src/main/java/com/bbn/hadder/Hadder.java | 12 ++++- .../java/com/bbn/hadder/commands/Command.java | 11 +++++ .../com/bbn/hadder/commands/TestCommand.java | 14 ++++++ .../commands/moderation/BanCommand.java | 46 +++++++++++++++++++ .../com/bbn/hadder/core/CommandHandler.java | 21 +++++++++ .../com/bbn/hadder/core/CommandParser.java | 45 ++++++++++++++++++ .../bbn/hadder/listener/BotListListener.java | 23 ++++++++++ .../bbn/hadder/listener/CommandListener.java | 30 ++++++++++++ .../bbn/hadder/listener/MentionListener.java | 2 +- .../com/bbn/hadder/utils/MessageEditor.java | 14 +++++- 12 files changed, 214 insertions(+), 4 deletions(-) create mode 100644 src/main/Translations/DE_TRANSLATION.properties create mode 100644 src/main/Translations/EN_TRANSLATION.properties create mode 100644 src/main/java/com/bbn/hadder/commands/Command.java create mode 100644 src/main/java/com/bbn/hadder/commands/TestCommand.java create mode 100644 src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java create mode 100644 src/main/java/com/bbn/hadder/core/CommandHandler.java create mode 100644 src/main/java/com/bbn/hadder/core/CommandParser.java create mode 100644 src/main/java/com/bbn/hadder/listener/BotListListener.java create mode 100644 src/main/java/com/bbn/hadder/listener/CommandListener.java diff --git a/src/main/Translations/DE_TRANSLATION.properties b/src/main/Translations/DE_TRANSLATION.properties new file mode 100644 index 0000000..e69de29 diff --git a/src/main/Translations/EN_TRANSLATION.properties b/src/main/Translations/EN_TRANSLATION.properties new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index 9ff2dd9..e7fdfd6 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -1,5 +1,9 @@ package com.bbn.hadder; +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.commands.TestCommand; +import com.bbn.hadder.commands.moderation.BanCommand; +import com.bbn.hadder.core.CommandHandler; import com.bbn.hadder.listener.*; import net.dv8tion.jda.api.entities.Activity; import net.dv8tion.jda.api.sharding.DefaultShardManagerBuilder; @@ -35,7 +39,13 @@ public class Hadder { builder.setActivity(Activity.streaming("auf dem BigBotNetwork", "https://twitch.tv/BigBotNetwork")); builder.setToken(config.getString("Token")); - builder.addEventListeners(new MentionListener(), new PrivateMessageListener()); + CommandHandler.cmdlist.put("test", new TestCommand()); + CommandHandler.cmdlist.put("ban", new BanCommand()); + + builder.addEventListeners( + new MentionListener(), + new PrivateMessageListener(), + new CommandListener()); try { ShardManager shardManager = builder.build(); diff --git a/src/main/java/com/bbn/hadder/commands/Command.java b/src/main/java/com/bbn/hadder/commands/Command.java new file mode 100644 index 0000000..9b1cf42 --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/Command.java @@ -0,0 +1,11 @@ +package com.bbn.hadder.commands; + +/* + * @author Skidder / GregTCLTK + */ + +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; + +public interface Command { + void executed(MessageReceivedEvent event); +} diff --git a/src/main/java/com/bbn/hadder/commands/TestCommand.java b/src/main/java/com/bbn/hadder/commands/TestCommand.java new file mode 100644 index 0000000..b12de03 --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/TestCommand.java @@ -0,0 +1,14 @@ +package com.bbn.hadder.commands; + +/* + * @author Skidder / GregTCLTK + */ + +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; + +public class TestCommand implements Command { + + public void executed(MessageReceivedEvent event) { + event.getTextChannel().sendMessage("TEST my friends").queue(); + } +} diff --git a/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java new file mode 100644 index 0000000..e39afff --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/moderation/BanCommand.java @@ -0,0 +1,46 @@ +package com.bbn.hadder.commands.moderation; + +/* + * @author Skidder / GregTCLTK + */ + +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.utils.MessageEditor; +import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.Permission; +import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; + +public class BanCommand implements Command { + + public void executed(MessageReceivedEvent event) { + if (event.getGuild().getMemberById(event.getAuthor().getId()).hasPermission(Permission.BAN_MEMBERS) || event.getGuild().getOwner().getId().equals(event.getAuthor().getId())) { + if (event.getMessage().getMentionedMembers().size() == 1) { + Member victim = event.getMessage().getMentionedMembers().get(0); + if (!event.getAuthor().getId().equals(victim.getId())) { + if (event.getGuild().getSelfMember().canInteract(victim)) { + event.getGuild().ban(victim, 0, "Banned by " + event.getAuthor().getAsTag()).queue(); + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully banned ✅").setDescription("I successfully baned " + victim.getUser().getName() + ".").build()).queue(); + } 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.WARNING, builder).setTitle("Not possible").setDescription("You can't ban yourself.").build()).queue(); + } + } else if (event.getMessage().getMentionedMembers().size() == 0) { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to mention a user!").build()).queue(); + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("We will be adding multiple banning within a command in the future.").build()).queue(); + } + + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_PERMISSION, builder).build()).queue(); + } + } +} diff --git a/src/main/java/com/bbn/hadder/core/CommandHandler.java b/src/main/java/com/bbn/hadder/core/CommandHandler.java new file mode 100644 index 0000000..be80d24 --- /dev/null +++ b/src/main/java/com/bbn/hadder/core/CommandHandler.java @@ -0,0 +1,21 @@ +package com.bbn.hadder.core; + +/* + * @author Skidder / GregTCLTK + */ + +import com.bbn.hadder.commands.Command; + +import java.util.HashMap; + +public class CommandHandler { + + public static HashMap cmdlist = new HashMap<>(); + + public static void handleCommand(CommandParser.commandContainer cmd) { + if(cmdlist.containsKey(cmd.invoke)) { + cmdlist.get(cmd.invoke).executed(cmd.event); + } + + } +} diff --git a/src/main/java/com/bbn/hadder/core/CommandParser.java b/src/main/java/com/bbn/hadder/core/CommandParser.java new file mode 100644 index 0000000..b658312 --- /dev/null +++ b/src/main/java/com/bbn/hadder/core/CommandParser.java @@ -0,0 +1,45 @@ +package com.bbn.hadder.core; + +/* + * @author Skidder / GregTCLTK + */ + +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; + +import java.util.ArrayList; +import java.util.Collections; + +public class CommandParser { + public static commandContainer parser(String raw, MessageReceivedEvent event) { + + String cmd = raw.replaceFirst("h.", ""); + String[] cmdsplit = cmd.split(" "); + String invoke = cmdsplit[0]; + ArrayList split = new ArrayList<>(); + Collections.addAll(split, cmdsplit); + String[] args = new String[split.size() - 1]; + split.subList(1, split.size()).toArray(args); + + return new commandContainer(raw, cmd, cmdsplit, invoke, args, event); + } + + static class commandContainer { + + final String raw; + final String cmd; + final String[] cmdsplit; + final String invoke; + final String[] args; + final MessageReceivedEvent event; + + commandContainer(String rw, String cmd, String[] cmdsplit, String invoke, String[] args, MessageReceivedEvent event) { + this.raw = rw; + this.cmd = cmd; + this.cmdsplit = cmdsplit; + this.invoke = invoke; + this.args = args; + this.event = event; + } + + } +} diff --git a/src/main/java/com/bbn/hadder/listener/BotListListener.java b/src/main/java/com/bbn/hadder/listener/BotListListener.java new file mode 100644 index 0000000..2d57cbc --- /dev/null +++ b/src/main/java/com/bbn/hadder/listener/BotListListener.java @@ -0,0 +1,23 @@ +package com.bbn.hadder.listener; + +/* + * @author Skidder / GregTCLTK + */ + +import net.dv8tion.jda.api.events.guild.GuildJoinEvent; +import net.dv8tion.jda.api.events.guild.GuildLeaveEvent; +import net.dv8tion.jda.api.hooks.ListenerAdapter; + +public class BotListListener extends ListenerAdapter { + + public void onGuildJoin(GuildJoinEvent event) { + + + } + + public void onGuildLeave(GuildLeaveEvent event) { + + + + } +} diff --git a/src/main/java/com/bbn/hadder/listener/CommandListener.java b/src/main/java/com/bbn/hadder/listener/CommandListener.java new file mode 100644 index 0000000..d1a4e0d --- /dev/null +++ b/src/main/java/com/bbn/hadder/listener/CommandListener.java @@ -0,0 +1,30 @@ +package com.bbn.hadder.listener; + +import com.bbn.hadder.core.CommandHandler; +import com.bbn.hadder.core.CommandParser; +import net.dv8tion.jda.api.Permission; +import net.dv8tion.jda.api.entities.ChannelType; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import net.dv8tion.jda.api.hooks.ListenerAdapter; + +import javax.annotation.Nonnull; + +/* + * @author Skidder / GregTCLTK + */ + +public class CommandListener extends ListenerAdapter { + + @Override + public void onMessageReceived(@Nonnull MessageReceivedEvent event) { + if (event.isFromType(ChannelType.TEXT)) { + if (event.getMessage().getContentRaw().startsWith("h.")) { + if (!event.getAuthor().isBot()) { + CommandHandler.handleCommand(CommandParser.parser(event.getMessage().getContentRaw(), event)); + } else if (event.getGuild().getSelfMember().hasPermission(Permission.MESSAGE_ADD_REACTION)) { + event.getMessage().addReaction("🙅").queue(); + } + } + } + } +} diff --git a/src/main/java/com/bbn/hadder/listener/MentionListener.java b/src/main/java/com/bbn/hadder/listener/MentionListener.java index 0fc8a6c..3bdca7e 100644 --- a/src/main/java/com/bbn/hadder/listener/MentionListener.java +++ b/src/main/java/com/bbn/hadder/listener/MentionListener.java @@ -13,7 +13,7 @@ public class MentionListener extends ListenerAdapter { @Override public void onMessageReceived(@Nonnull MessageReceivedEvent event) { if (event.isFromType(ChannelType.TEXT)) { - if (event.getMessage().getMentionedMembers().contains(event.getGuild().getSelfMember())) { + if (event.getMessage().getContentRaw().equals("<@!" + event.getJDA().getSelfUser().getId() + ">")) { EmbedBuilder builder = new EmbedBuilder() .setTitle("Hello I'm Hadder.") .setAuthor(event.getJDA().getSelfUser().getName(), event.getJDA().getSelfUser().getAvatarUrl(), event.getJDA().getSelfUser().getAvatarUrl()) diff --git a/src/main/java/com/bbn/hadder/utils/MessageEditor.java b/src/main/java/com/bbn/hadder/utils/MessageEditor.java index 1cab926..976ed1c 100644 --- a/src/main/java/com/bbn/hadder/utils/MessageEditor.java +++ b/src/main/java/com/bbn/hadder/utils/MessageEditor.java @@ -17,7 +17,15 @@ public class MessageEditor { break; case WARNING: - embedBuilder.setColor(Color.ORANGE); + embedBuilder.setTitle("⚠ Warning ⚠").setColor(Color.ORANGE); + break; + + case NO_PERMISSION: + embedBuilder.setTitle("⛔ No Permission ⛔").setDescription("You are not authorized to execute this command!").setColor(Color.RED); + break; + + case NO_SELF_PERMISSION: + embedBuilder.setTitle("⛔ No Permission ⛔").setDescription("Unfortunately, I do not have the required ban rights to perform this action").setColor(Color.RED); break; } return embedBuilder; @@ -26,7 +34,9 @@ public class MessageEditor { public enum Messagetype { ERROR, WARNING, - INFO + INFO, + NO_PERMISSION, + NO_SELF_PERMISSION } } -- 2.45.3