From cd59c54dcd0c678cf6ef29cdec89023f10d0feaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Pani=C4=87?= Date: Thu, 18 Jul 2019 01:11:32 +0200 Subject: [PATCH] Added info message rechecking --- .../commands/CheckMessagesCommand.java | 22 +++++++++++++++++++ .../redstonerBot/commands/StopCommand.java | 8 +++++-- .../redstonerBot/managers/CommandManager.java | 3 ++- .../redstonerBot/managers/InfoManager.java | 18 ++++++++++----- .../InfoReactableMessageHandler.java | 6 ++--- .../OptInReactableMessageHandler.java | 5 ++--- .../ReactableMessageHandler.java | 7 +++++- 7 files changed, 53 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/redstoner/redstonerBot/commands/CheckMessagesCommand.java diff --git a/src/main/java/com/redstoner/redstonerBot/commands/CheckMessagesCommand.java b/src/main/java/com/redstoner/redstonerBot/commands/CheckMessagesCommand.java new file mode 100644 index 0000000..1aaeab6 --- /dev/null +++ b/src/main/java/com/redstoner/redstonerBot/commands/CheckMessagesCommand.java @@ -0,0 +1,22 @@ +package com.redstoner.redstonerBot.commands; + +import com.redstoner.redstonerBot.managers.DiscordManager; +import com.redstoner.redstonerBot.managers.InfoManager; +import net.dv8tion.jda.core.entities.*; + +public class CheckMessagesCommand implements Command { + @Override + public boolean execute(Guild guild, TextChannel channel, Message message, User author, Member self, String command, String[] params) { + if (!guild.getOwnerId().equals(author.getId())) { + message.getChannel().sendMessage("You are not allowed to run this command " + author.getAsMention()).queue(DiscordManager::expireMessage); + + return false; + } + + message.getChannel().sendMessage("Rechecking messages " + author.getAsMention()).queue(DiscordManager::expireMessage); + + InfoManager.checkMessages(); + + return true; + } +} diff --git a/src/main/java/com/redstoner/redstonerBot/commands/StopCommand.java b/src/main/java/com/redstoner/redstonerBot/commands/StopCommand.java index 8cb0fdd..b902f2a 100644 --- a/src/main/java/com/redstoner/redstonerBot/commands/StopCommand.java +++ b/src/main/java/com/redstoner/redstonerBot/commands/StopCommand.java @@ -7,9 +7,13 @@ import net.dv8tion.jda.core.entities.*; public class StopCommand implements Command { @Override public boolean execute(Guild guild, TextChannel channel, Message message, User author, Member self, String command, String[] params) { - if (!guild.getOwnerId().equals(author.getId())) return false; + if (!guild.getOwnerId().equals(author.getId())) { + message.getChannel().sendMessage("You are not allowed to run this command " + author.getAsMention()).queue(DiscordManager::expireMessage); - message.getChannel().sendMessage("This bot will stop in 5 seconds, as requested by " + author.getAsTag()).queue(DiscordManager::expireMessage); + return false; + } + + message.getChannel().sendMessage("This bot will stop in 5 seconds, as requested by " + author.getAsMention()).queue(DiscordManager::expireMessage); new Thread(() -> { try { diff --git a/src/main/java/com/redstoner/redstonerBot/managers/CommandManager.java b/src/main/java/com/redstoner/redstonerBot/managers/CommandManager.java index 81ef3bb..96e8f14 100644 --- a/src/main/java/com/redstoner/redstonerBot/managers/CommandManager.java +++ b/src/main/java/com/redstoner/redstonerBot/managers/CommandManager.java @@ -1,6 +1,7 @@ package com.redstoner.redstonerBot.managers; import com.redstoner.redstonerBot.Manager; +import com.redstoner.redstonerBot.commands.CheckMessagesCommand; import com.redstoner.redstonerBot.commands.Command; import com.redstoner.redstonerBot.commands.InfoCommand; import com.redstoner.redstonerBot.commands.StopCommand; @@ -23,7 +24,7 @@ public class CommandManager implements Manager { commands.put("info", new InfoCommand()); commands.put("stop", new StopCommand()); - + commands.put("checkmessages", new CheckMessagesCommand()); logger.info("Command Manager started!"); return true; diff --git a/src/main/java/com/redstoner/redstonerBot/managers/InfoManager.java b/src/main/java/com/redstoner/redstonerBot/managers/InfoManager.java index 6ceae60..14c28d6 100644 --- a/src/main/java/com/redstoner/redstonerBot/managers/InfoManager.java +++ b/src/main/java/com/redstoner/redstonerBot/managers/InfoManager.java @@ -16,7 +16,7 @@ import java.util.List; public class InfoManager implements Manager { private static final Logger logger = LoggerFactory.getLogger(InfoManager.class); - private List messageHandlers = new ArrayList<>(); + private static List messageHandlers = new ArrayList<>(); @Override public boolean start() { @@ -29,11 +29,7 @@ public class InfoManager implements Manager { messageHandlers.add(new InfoReactableMessageHandler(jda, guild, channel)); messageHandlers.add(new OptInReactableMessageHandler(jda, guild, channel)); - new Thread(() -> { - for (ReactableMessageHandler handler : messageHandlers) { - handler.checkMessage(); - } - }).start(); + checkMessages(); logger.info("Info Manager started!"); return true; @@ -52,4 +48,14 @@ public class InfoManager implements Manager { logger.info("Info Manager stopped!"); return true; } + + public static void checkMessages() { + new Thread(() -> { + for (ReactableMessageHandler handler : messageHandlers) { + handler.checkMessage(); + } + }).start(); + } + + } diff --git a/src/main/java/com/redstoner/redstonerBot/reactableMessages/InfoReactableMessageHandler.java b/src/main/java/com/redstoner/redstonerBot/reactableMessages/InfoReactableMessageHandler.java index ff59796..b81ad9c 100644 --- a/src/main/java/com/redstoner/redstonerBot/reactableMessages/InfoReactableMessageHandler.java +++ b/src/main/java/com/redstoner/redstonerBot/reactableMessages/InfoReactableMessageHandler.java @@ -8,7 +8,6 @@ import net.dv8tion.jda.core.entities.*; import net.dv8tion.jda.core.managers.GuildController; import java.util.*; -import java.util.function.Consumer; public class InfoReactableMessageHandler extends ReactableMessageHandler { static Map configNames = new HashMap<>(); @@ -32,7 +31,7 @@ public class InfoReactableMessageHandler extends ReactableMessageHandler { } @Override - public void send(Consumer onSent) { + public Message getMessage() { String prefix = DataManager.getConfigValue(configNames.get("prefix")); String suffix = DataManager.getConfigValue(configNames.get("suffix")); @@ -72,9 +71,10 @@ public class InfoReactableMessageHandler extends ReactableMessageHandler { msg.append(suffix); - channel.sendMessage(msg.build()).queue(onSent); + return msg.build(); } + @Override public ReactionHandler getReactionHandler() { return (messageId, reaction, author, added) -> { diff --git a/src/main/java/com/redstoner/redstonerBot/reactableMessages/OptInReactableMessageHandler.java b/src/main/java/com/redstoner/redstonerBot/reactableMessages/OptInReactableMessageHandler.java index 31a1240..e7ef45e 100644 --- a/src/main/java/com/redstoner/redstonerBot/reactableMessages/OptInReactableMessageHandler.java +++ b/src/main/java/com/redstoner/redstonerBot/reactableMessages/OptInReactableMessageHandler.java @@ -9,7 +9,6 @@ import net.dv8tion.jda.core.entities.*; import net.dv8tion.jda.core.managers.GuildController; import java.util.*; -import java.util.function.Consumer; public class OptInReactableMessageHandler extends ReactableMessageHandler { static Map configNames = new HashMap<>(); @@ -34,7 +33,7 @@ public class OptInReactableMessageHandler extends ReactableMessageHandler { } @Override - public void send(Consumer onSent) { + public Message getMessage() { String prefix = DataManager.getConfigValue(configNames.get("prefix")); String suffix = DataManager.getConfigValue(configNames.get("suffix")); @@ -106,7 +105,7 @@ public class OptInReactableMessageHandler extends ReactableMessageHandler { msg.append(suffix); - channel.sendMessage(msg.build()).queue(onSent); + return msg.build(); } @Override diff --git a/src/main/java/com/redstoner/redstonerBot/reactableMessages/ReactableMessageHandler.java b/src/main/java/com/redstoner/redstonerBot/reactableMessages/ReactableMessageHandler.java index 71330ca..7ea5089 100644 --- a/src/main/java/com/redstoner/redstonerBot/reactableMessages/ReactableMessageHandler.java +++ b/src/main/java/com/redstoner/redstonerBot/reactableMessages/ReactableMessageHandler.java @@ -35,17 +35,22 @@ public abstract class ReactableMessageHandler { abstract Map getConfigNames(); - public abstract void send(Consumer onSent); + public abstract Message getMessage(); public abstract ReactionHandler getReactionHandler(); public abstract Set getReactions(); + private void send(Consumer onSent) { + channel.sendMessage(getMessage()).queue(onSent); + } + public void checkMessage() { logger.info("[Check] Checking message ID: " + msgId); try { checkAfterMessageFound(channel.getMessageById(msgId).complete()); + channel.editMessageById(msgId, getMessage()).queue(); } catch (Exception e) { logger.info("[Check] Message with ID " + msgId + " does not exist, sending new one!"); send(this::checkAfterMessageFound);