Merge two classes
This commit is contained in:
parent
cce57b8108
commit
24a55e14fd
@ -18,8 +18,8 @@ import wtf.beatrice.hidekobot.listeners.SlashCommandCompletionListener;
|
|||||||
import wtf.beatrice.hidekobot.listeners.SlashCommandListener;
|
import wtf.beatrice.hidekobot.listeners.SlashCommandListener;
|
||||||
import wtf.beatrice.hidekobot.runnables.ExpiredMessageTask;
|
import wtf.beatrice.hidekobot.runnables.ExpiredMessageTask;
|
||||||
import wtf.beatrice.hidekobot.runnables.HeartBeatTask;
|
import wtf.beatrice.hidekobot.runnables.HeartBeatTask;
|
||||||
|
import wtf.beatrice.hidekobot.util.CommandUtil;
|
||||||
import wtf.beatrice.hidekobot.util.Logger;
|
import wtf.beatrice.hidekobot.util.Logger;
|
||||||
import wtf.beatrice.hidekobot.util.SlashCommandUtil;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@ -152,7 +152,7 @@ public class HidekoBot
|
|||||||
// update slash commands (delayed)
|
// update slash commands (delayed)
|
||||||
final boolean finalForceUpdateCommands = forceUpdateCommands;
|
final boolean finalForceUpdateCommands = forceUpdateCommands;
|
||||||
Executors.newSingleThreadScheduledExecutor().schedule(() -> // todo: try-with-resources
|
Executors.newSingleThreadScheduledExecutor().schedule(() -> // todo: try-with-resources
|
||||||
SlashCommandUtil.updateSlashCommands(finalForceUpdateCommands), 1, TimeUnit.SECONDS);
|
CommandUtil.updateSlashCommands(finalForceUpdateCommands), 1, TimeUnit.SECONDS);
|
||||||
|
|
||||||
// set the bot's status
|
// set the bot's status
|
||||||
jda.getPresence().setStatus(OnlineStatus.ONLINE);
|
jda.getPresence().setStatus(OnlineStatus.ONLINE);
|
||||||
|
@ -1,11 +1,21 @@
|
|||||||
package wtf.beatrice.hidekobot.util;
|
package wtf.beatrice.hidekobot.util;
|
||||||
|
|
||||||
|
import net.dv8tion.jda.api.JDA;
|
||||||
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
|
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
|
||||||
|
import net.dv8tion.jda.api.interactions.commands.Command;
|
||||||
|
import net.dv8tion.jda.api.interactions.commands.build.CommandData;
|
||||||
import wtf.beatrice.hidekobot.Cache;
|
import wtf.beatrice.hidekobot.Cache;
|
||||||
|
import wtf.beatrice.hidekobot.HidekoBot;
|
||||||
|
import wtf.beatrice.hidekobot.objects.commands.SlashCommand;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class CommandUtil
|
public class CommandUtil
|
||||||
{
|
{
|
||||||
|
|
||||||
|
private static final Logger logger = new Logger(CommandUtil.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to delete a message when a user clicks the "delete" button attached to that message.
|
* Function to delete a message when a user clicks the "delete" button attached to that message.
|
||||||
* This will check in the database if that user ran the command originally.
|
* This will check in the database if that user ran the command originally.
|
||||||
@ -24,4 +34,97 @@ public class CommandUtil
|
|||||||
event.getInteraction().getMessage().delete().queue();
|
event.getInteraction().getMessage().delete().queue();
|
||||||
// no need to manually untrack it from database, it will be purged on the next planned check.
|
// no need to manually untrack it from database, it will be purged on the next planned check.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void updateSlashCommands(boolean force)
|
||||||
|
{
|
||||||
|
|
||||||
|
// populate commands list from registered commands
|
||||||
|
List<CommandData> allCommands = new ArrayList<>();
|
||||||
|
for(SlashCommand cmd : Cache.getSlashCommandListener().getRegisteredCommands())
|
||||||
|
{ allCommands.add(cmd.getSlashCommandData()); }
|
||||||
|
|
||||||
|
JDA jdaInstance = HidekoBot.getAPI();
|
||||||
|
|
||||||
|
// get all the already registered commands
|
||||||
|
List<Command> registeredCommands = jdaInstance.retrieveCommands().complete();
|
||||||
|
|
||||||
|
boolean update = false;
|
||||||
|
|
||||||
|
if(force)
|
||||||
|
{
|
||||||
|
update = true;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
|
||||||
|
// for each command that we have already registered...
|
||||||
|
for(Command currRegCmd : registeredCommands)
|
||||||
|
{
|
||||||
|
boolean found = false;
|
||||||
|
|
||||||
|
// iterate through all "recognized" commands
|
||||||
|
for(CommandData cmdData : allCommands)
|
||||||
|
{
|
||||||
|
// if we find the same command...
|
||||||
|
if(cmdData.getName().equals(currRegCmd.getName()))
|
||||||
|
{
|
||||||
|
// quit the loop since we found it.
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if no match was found, we need to send an updated command list because
|
||||||
|
// an old command was probably removed.
|
||||||
|
if(!found)
|
||||||
|
{
|
||||||
|
update = true;
|
||||||
|
|
||||||
|
// quit the loop since we only need to trigger this once.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if an update is not already queued...
|
||||||
|
if(!update)
|
||||||
|
{
|
||||||
|
// for each "recognized" valid command
|
||||||
|
for(CommandData currCmdData : allCommands)
|
||||||
|
{
|
||||||
|
boolean found = false;
|
||||||
|
|
||||||
|
// iterate through all already registered commands.
|
||||||
|
for(Command cmd : registeredCommands)
|
||||||
|
{
|
||||||
|
// if this command was already registered...
|
||||||
|
if(cmd.getName().equals(currCmdData.getName()))
|
||||||
|
{
|
||||||
|
// quit the loop since we found a match.
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if no match was found, we need to send an updated command list because
|
||||||
|
// a new command was probably added.
|
||||||
|
if(!found)
|
||||||
|
{
|
||||||
|
update = true;
|
||||||
|
|
||||||
|
// quit the loop since we only need to trigger this once.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.log("Found " + registeredCommands.size() + " commands.");
|
||||||
|
|
||||||
|
if(update)
|
||||||
|
{
|
||||||
|
// send updated command list.
|
||||||
|
jdaInstance.updateCommands().addCommands(allCommands).queue();
|
||||||
|
logger.log("Commands updated. New total: " + allCommands.size() + ".");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,110 +0,0 @@
|
|||||||
package wtf.beatrice.hidekobot.util;
|
|
||||||
|
|
||||||
import net.dv8tion.jda.api.JDA;
|
|
||||||
import net.dv8tion.jda.api.interactions.commands.Command;
|
|
||||||
import net.dv8tion.jda.api.interactions.commands.build.CommandData;
|
|
||||||
import wtf.beatrice.hidekobot.Cache;
|
|
||||||
import wtf.beatrice.hidekobot.HidekoBot;
|
|
||||||
import wtf.beatrice.hidekobot.listeners.MessageCommandListener;
|
|
||||||
import wtf.beatrice.hidekobot.objects.commands.SlashCommand;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class SlashCommandUtil
|
|
||||||
{
|
|
||||||
|
|
||||||
private static final Logger logger = new Logger(MessageCommandListener.class);
|
|
||||||
|
|
||||||
public static void updateSlashCommands(boolean force)
|
|
||||||
{
|
|
||||||
|
|
||||||
// populate commands list from registered commands
|
|
||||||
List<CommandData> allCommands = new ArrayList<>();
|
|
||||||
for(SlashCommand cmd : Cache.getSlashCommandListener().getRegisteredCommands())
|
|
||||||
{ allCommands.add(cmd.getSlashCommandData()); }
|
|
||||||
|
|
||||||
JDA jdaInstance = HidekoBot.getAPI();
|
|
||||||
|
|
||||||
// get all the already registered commands
|
|
||||||
List<Command> registeredCommands = jdaInstance.retrieveCommands().complete();
|
|
||||||
|
|
||||||
boolean update = false;
|
|
||||||
|
|
||||||
if(force)
|
|
||||||
{
|
|
||||||
update = true;
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
|
|
||||||
// for each command that we have already registered...
|
|
||||||
for(Command currRegCmd : registeredCommands)
|
|
||||||
{
|
|
||||||
boolean found = false;
|
|
||||||
|
|
||||||
// iterate through all "recognized" commands
|
|
||||||
for(CommandData cmdData : allCommands)
|
|
||||||
{
|
|
||||||
// if we find the same command...
|
|
||||||
if(cmdData.getName().equals(currRegCmd.getName()))
|
|
||||||
{
|
|
||||||
// quit the loop since we found it.
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if no match was found, we need to send an updated command list because
|
|
||||||
// an old command was probably removed.
|
|
||||||
if(!found)
|
|
||||||
{
|
|
||||||
update = true;
|
|
||||||
|
|
||||||
// quit the loop since we only need to trigger this once.
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if an update is not already queued...
|
|
||||||
if(!update)
|
|
||||||
{
|
|
||||||
// for each "recognized" valid command
|
|
||||||
for(CommandData currCmdData : allCommands)
|
|
||||||
{
|
|
||||||
boolean found = false;
|
|
||||||
|
|
||||||
// iterate through all already registered commands.
|
|
||||||
for(Command cmd : registeredCommands)
|
|
||||||
{
|
|
||||||
// if this command was already registered...
|
|
||||||
if(cmd.getName().equals(currCmdData.getName()))
|
|
||||||
{
|
|
||||||
// quit the loop since we found a match.
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if no match was found, we need to send an updated command list because
|
|
||||||
// a new command was probably added.
|
|
||||||
if(!found)
|
|
||||||
{
|
|
||||||
update = true;
|
|
||||||
|
|
||||||
// quit the loop since we only need to trigger this once.
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.log("Found " + registeredCommands.size() + " commands.");
|
|
||||||
|
|
||||||
if(update)
|
|
||||||
{
|
|
||||||
// send updated command list.
|
|
||||||
jdaInstance.updateCommands().addCommands(allCommands).queue();
|
|
||||||
logger.log("Commands updated. New total: " + allCommands.size() + ".");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user