Move command handling out of constructor, add coin reflip command
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
Having heavy code run in a constructor is bad practice. We made separate methods for command handling.
This commit is contained in:
parent
c44251ddb7
commit
3d626bb46f
@ -6,6 +6,7 @@ import net.dv8tion.jda.api.OnlineStatus;
|
|||||||
import net.dv8tion.jda.api.entities.Activity;
|
import net.dv8tion.jda.api.entities.Activity;
|
||||||
import net.dv8tion.jda.api.requests.GatewayIntent;
|
import net.dv8tion.jda.api.requests.GatewayIntent;
|
||||||
import sun.misc.Signal;
|
import sun.misc.Signal;
|
||||||
|
import wtf.beatrice.hidekobot.listeners.ButtonInteractionListener;
|
||||||
import wtf.beatrice.hidekobot.listeners.MessageListener;
|
import wtf.beatrice.hidekobot.listeners.MessageListener;
|
||||||
import wtf.beatrice.hidekobot.listeners.SlashCommandCompleter;
|
import wtf.beatrice.hidekobot.listeners.SlashCommandCompleter;
|
||||||
import wtf.beatrice.hidekobot.listeners.SlashCommandListener;
|
import wtf.beatrice.hidekobot.listeners.SlashCommandListener;
|
||||||
@ -81,6 +82,7 @@ public class HidekoBot
|
|||||||
jda.addEventListener(new MessageListener());
|
jda.addEventListener(new MessageListener());
|
||||||
jda.addEventListener(new SlashCommandListener());
|
jda.addEventListener(new SlashCommandListener());
|
||||||
jda.addEventListener(new SlashCommandCompleter());
|
jda.addEventListener(new SlashCommandCompleter());
|
||||||
|
jda.addEventListener(new ButtonInteractionListener());
|
||||||
|
|
||||||
// update slash commands (delayed)
|
// update slash commands (delayed)
|
||||||
final boolean finalForceUpdateCommands = forceUpdateCommands;
|
final boolean finalForceUpdateCommands = forceUpdateCommands;
|
||||||
|
@ -12,7 +12,7 @@ import java.awt.*;
|
|||||||
public class AvatarCommand
|
public class AvatarCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
public AvatarCommand(@NotNull SlashCommandInteractionEvent event)
|
public void runSlashCommand(@NotNull SlashCommandInteractionEvent event)
|
||||||
{
|
{
|
||||||
event.deferReply().queue();
|
event.deferReply().queue();
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ import java.util.List;
|
|||||||
public class ClearChatCommand
|
public class ClearChatCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
public ClearChatCommand(@NotNull SlashCommandInteractionEvent event)
|
public void runSlashCommand(@NotNull SlashCommandInteractionEvent event)
|
||||||
{
|
{
|
||||||
MessageChannel channel = event.getChannel();
|
MessageChannel channel = event.getChannel();
|
||||||
|
|
||||||
@ -39,10 +39,10 @@ public class ClearChatCommand
|
|||||||
// answer by saying that the operation has begun.
|
// answer by saying that the operation has begun.
|
||||||
InteractionHook replyInteraction = event.reply("\uD83D\uDEA7 Clearing...").complete();
|
InteractionHook replyInteraction = event.reply("\uD83D\uDEA7 Clearing...").complete();
|
||||||
|
|
||||||
// int to keep track of how many messages we deleted.
|
// int to keep track of how many messages we actually deleted.
|
||||||
int deleted = 0;
|
int deleted = 0;
|
||||||
|
|
||||||
int limit = 95; //discord limits this method to range 2-100. we set it to 95 to be safe..
|
int limit = 95; //discord limits this method to range 2-100. we set it to 95 to be safe.
|
||||||
|
|
||||||
// increase the count by 1, because we technically aren't clearing the first ID ever
|
// increase the count by 1, because we technically aren't clearing the first ID ever
|
||||||
// which is actually the slash command's ID and not a message.
|
// which is actually the slash command's ID and not a message.
|
||||||
|
@ -1,13 +1,20 @@
|
|||||||
package wtf.beatrice.hidekobot.commands.slash;
|
package wtf.beatrice.hidekobot.commands.slash;
|
||||||
|
|
||||||
|
import net.dv8tion.jda.api.entities.emoji.Emoji;
|
||||||
|
import net.dv8tion.jda.api.events.interaction.GenericInteractionCreateEvent;
|
||||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||||
|
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
|
||||||
|
import net.dv8tion.jda.api.interactions.components.ActionRow;
|
||||||
|
import net.dv8tion.jda.api.interactions.components.buttons.Button;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import wtf.beatrice.hidekobot.utils.RandomUtil;
|
import wtf.beatrice.hidekobot.utils.RandomUtil;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class CoinFlipCommand
|
public class CoinFlipCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
public CoinFlipCommand(@NotNull SlashCommandInteractionEvent event)
|
public void runSlashCommand(@NotNull SlashCommandInteractionEvent event)
|
||||||
{
|
{
|
||||||
int rand = RandomUtil.getRandomNumber(0, 1);
|
int rand = RandomUtil.getRandomNumber(0, 1);
|
||||||
String msg;
|
String msg;
|
||||||
@ -19,6 +26,32 @@ public class CoinFlipCommand
|
|||||||
msg = "It's **Tails**! :coin:";
|
msg = "It's **Tails**! :coin:";
|
||||||
}
|
}
|
||||||
|
|
||||||
event.reply(msg).queue();
|
event.reply(msg)
|
||||||
|
.addActionRow(Button.primary("reflip", "Flip again")
|
||||||
|
.withEmoji(Emoji.fromFormatted("\uD83E\uDE99")) // coin emoji
|
||||||
|
).queue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void buttonReflip(ButtonInteractionEvent event)
|
||||||
|
{
|
||||||
|
List<ActionRow> actionRows = event.getMessage().getActionRows();
|
||||||
|
actionRows.set(0, actionRows.get(0).asDisabled());
|
||||||
|
event.editComponents(actionRows).queue();
|
||||||
|
|
||||||
|
int rand = RandomUtil.getRandomNumber(0, 1);
|
||||||
|
String msg;
|
||||||
|
|
||||||
|
if(rand == 1)
|
||||||
|
{
|
||||||
|
msg = ":coin: It's **Heads**!";
|
||||||
|
} else {
|
||||||
|
msg = "It's **Tails**! :coin:";
|
||||||
|
}
|
||||||
|
|
||||||
|
event.getHook().sendMessage(msg)
|
||||||
|
.addActionRow(Button.primary("reflip", "Flip again")
|
||||||
|
.withEmoji(Emoji.fromFormatted("\uD83E\uDE99")) // coin emoji
|
||||||
|
).queue();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ import java.util.concurrent.TimeUnit;
|
|||||||
public class DieCommand
|
public class DieCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
public DieCommand(@NotNull SlashCommandInteractionEvent event)
|
public void runSlashCommand(@NotNull SlashCommandInteractionEvent event)
|
||||||
{
|
{
|
||||||
if(Configuration.getBotOwnerId() != event.getMember().getIdLong())
|
if(Configuration.getBotOwnerId() != event.getMember().getIdLong())
|
||||||
{
|
{
|
||||||
|
@ -8,7 +8,7 @@ import wtf.beatrice.hidekobot.Configuration;
|
|||||||
|
|
||||||
public class InviteCommand
|
public class InviteCommand
|
||||||
{
|
{
|
||||||
public InviteCommand(@NotNull SlashCommandInteractionEvent event)
|
public void runSlashCommand(@NotNull SlashCommandInteractionEvent event)
|
||||||
{
|
{
|
||||||
ReplyCallbackAction reply = event.reply("Here's your link ✨ " + Configuration.getInviteUrl());
|
ReplyCallbackAction reply = event.reply("Here's your link ✨ " + Configuration.getInviteUrl());
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
public class PingCommand
|
public class PingCommand
|
||||||
{
|
{
|
||||||
public PingCommand(@NotNull SlashCommandInteractionEvent event)
|
public void runSlashCommand(@NotNull SlashCommandInteractionEvent event)
|
||||||
{
|
{
|
||||||
event.reply("Pong!").queue();
|
event.reply("Pong!").queue();
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
package wtf.beatrice.hidekobot.listeners;
|
||||||
|
|
||||||
|
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
|
||||||
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
|
import wtf.beatrice.hidekobot.commands.slash.CoinFlipCommand;
|
||||||
|
|
||||||
|
public class ButtonInteractionListener extends ListenerAdapter
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onButtonInteraction(ButtonInteractionEvent event)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch (event.getComponentId().toLowerCase()) {
|
||||||
|
|
||||||
|
// coinflip
|
||||||
|
case "reflip" -> new CoinFlipCommand().buttonReflip(event);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -12,12 +12,12 @@ public class SlashCommandListener extends ListenerAdapter
|
|||||||
public void onSlashCommandInteraction(@NotNull SlashCommandInteractionEvent event)
|
public void onSlashCommandInteraction(@NotNull SlashCommandInteractionEvent event)
|
||||||
{
|
{
|
||||||
switch (event.getName().toLowerCase()) {
|
switch (event.getName().toLowerCase()) {
|
||||||
case "avatar" -> new AvatarCommand(event);
|
case "avatar" -> new AvatarCommand().runSlashCommand(event);
|
||||||
case "clear" -> new ClearChatCommand(event);
|
case "clear" -> new ClearChatCommand().runSlashCommand(event);
|
||||||
case "coinflip" -> new CoinFlipCommand(event);
|
case "coinflip" -> new CoinFlipCommand().runSlashCommand(event);
|
||||||
case "die" -> new DieCommand(event);
|
case "die" -> new DieCommand().runSlashCommand(event);
|
||||||
case "invite" -> new InviteCommand(event);
|
case "invite" -> new InviteCommand().runSlashCommand(event);
|
||||||
case "ping" -> new PingCommand(event);
|
case "ping" -> new PingCommand().runSlashCommand(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user