Implement invite link command
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Bea 2022-11-20 16:07:04 +01:00
parent b14850acaa
commit 18db0282d5
7 changed files with 37 additions and 12 deletions

View File

@ -12,6 +12,11 @@ public class Configuration
// todo: allow people to set their own user id // todo: allow people to set their own user id
private static final long botOwnerId = 979809420714332260L; private static final long botOwnerId = 979809420714332260L;
private final static String defaultInviteLink =
"https://discord.com/api/oauth2/authorize?client_id=%userid%&scope=bot+applications.commands&permissions=8";
private static String botUserId = "";
/** /**
* Checks if the bot has been started with the verbose argument. * Checks if the bot has been started with the verbose argument.
@ -54,4 +59,15 @@ public class Configuration
*/ */
public static long getBotOwnerId() { return botOwnerId; } public static long getBotOwnerId() { return botOwnerId; }
public static void seBotUserId(String id)
{
botUserId = id;
}
public static String getBotUserId() { return botUserId; }
public static String getInviteUrl() {
return defaultInviteLink.replace("%userid%", botUserId);
}
} }

View File

@ -20,9 +20,6 @@ import java.util.concurrent.TimeUnit;
public class HidekoBot public class HidekoBot
{ {
private static String botToken; private static String botToken;
private static String standardInviteLink =
"https://discord.com/oauth2/authorize?client_id=%userid%&scope=bot+applications.commands&permissions=8";
private static String botUserId;
private static final String version = "0.0.2-slash"; // we should probably find a way to make this consistent with Maven private static final String version = "0.0.2-slash"; // we should probably find a way to make this consistent with Maven
private static JDA jda; private static JDA jda;
@ -64,8 +61,8 @@ public class HidekoBot
} }
// find the bot's user id and generate an invite-link. // find the bot's user id and generate an invite-link.
botUserId = jda.getSelfUser().getId(); String botUserId = jda.getSelfUser().getId();
standardInviteLink = standardInviteLink.replace("%userid%", botUserId); Configuration.seBotUserId(botUserId);
// register listeners // register listeners
jda.addEventListener(new MessageListener()); jda.addEventListener(new MessageListener());
@ -94,7 +91,7 @@ public class HidekoBot
// log the invite-link to console so noob users can just click on it. // log the invite-link to console so noob users can just click on it.
logger.log("Bot User ID: " + botUserId, 3); logger.log("Bot User ID: " + botUserId, 3);
logger.log("Invite Link: " + standardInviteLink, 4); logger.log("Invite Link: " + Configuration.getInviteUrl(), 4);
} }
public static JDA getAPI() public static JDA getAPI()

View File

@ -20,7 +20,7 @@ public class MessageListener extends ListenerAdapter
if(eventMessage.equalsIgnoreCase("hideko")) if(eventMessage.equalsIgnoreCase("hideko"))
{ {
MessageChannel channel = event.getChannel(); MessageChannel channel = event.getChannel();
channel.sendMessage("Hello there! :sparkles:").queue(); channel.sendMessage("Hello there! ").queue();
return; return;
} }

View File

@ -3,10 +3,7 @@ package wtf.beatrice.hidekobot.listeners;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter; import net.dv8tion.jda.api.hooks.ListenerAdapter;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import wtf.beatrice.hidekobot.slashcommands.ClearChatCommand; import wtf.beatrice.hidekobot.slashcommands.*;
import wtf.beatrice.hidekobot.slashcommands.CoinFlipCommand;
import wtf.beatrice.hidekobot.slashcommands.DieCommand;
import wtf.beatrice.hidekobot.slashcommands.PingCommand;
public class SlashCommandListener extends ListenerAdapter public class SlashCommandListener extends ListenerAdapter
{ {
@ -18,6 +15,7 @@ public class SlashCommandListener extends ListenerAdapter
case "clear" -> new ClearChatCommand(event); case "clear" -> new ClearChatCommand(event);
case "coinflip" -> new CoinFlipCommand(event); case "coinflip" -> new CoinFlipCommand(event);
case "die" -> new DieCommand(event); case "die" -> new DieCommand(event);
case "invite" -> new InviteCommand(event);
case "ping" -> new PingCommand(event); case "ping" -> new PingCommand(event);
} }
} }

View File

@ -17,7 +17,7 @@ public class DieCommand
{ {
event.reply("Sorry, only the bot owner can run this command!").setEphemeral(true).queue(); event.reply("Sorry, only the bot owner can run this command!").setEphemeral(true).queue();
} else { } else {
event.reply("Going to sleep! Cya :sparkles:").queue(); event.reply("Going to sleep! Cya ").queue();
Executors.newSingleThreadScheduledExecutor().schedule(HidekoBot::shutdown, 3, TimeUnit.SECONDS); Executors.newSingleThreadScheduledExecutor().schedule(HidekoBot::shutdown, 3, TimeUnit.SECONDS);
} }
} }

View File

@ -0,0 +1,13 @@
package wtf.beatrice.hidekobot.slashcommands;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import org.jetbrains.annotations.NotNull;
import wtf.beatrice.hidekobot.Configuration;
public class InviteCommand
{
public InviteCommand(@NotNull SlashCommandInteractionEvent event)
{
event.reply("Here's your link ✨ " + Configuration.getInviteUrl()).setEphemeral(true).queue();
}
}

View File

@ -26,6 +26,7 @@ public class SlashCommandsUtil
.addOption(OptionType.INTEGER, "amount", "The amount of messages to delete.") .addOption(OptionType.INTEGER, "amount", "The amount of messages to delete.")
.setDefaultPermissions(DefaultMemberPermissions.enabledFor(Permission.MESSAGE_MANAGE))); .setDefaultPermissions(DefaultMemberPermissions.enabledFor(Permission.MESSAGE_MANAGE)));
add(Commands.slash("coinflip", "Flip a coin and get head or tails.")); add(Commands.slash("coinflip", "Flip a coin and get head or tails."));
add(Commands.slash("invite", "Get an invite link for the bot."));
add(Commands.slash("ping", "Test if the bot is responsive.")); add(Commands.slash("ping", "Test if the bot is responsive."));
}}; }};