diff --git a/src/com/johnymuffin/beta/discordchatbridge/DCBDiscordListener.java b/src/com/johnymuffin/beta/discordchatbridge/DCBDiscordListener.java index 6a5be9b..bf47723 100644 --- a/src/com/johnymuffin/beta/discordchatbridge/DCBDiscordListener.java +++ b/src/com/johnymuffin/beta/discordchatbridge/DCBDiscordListener.java @@ -2,8 +2,13 @@ import com.johnymuffin.beta.discordauth.DiscordAuthentication; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.MessageBuilder; +import net.dv8tion.jda.api.entities.Message; +import net.dv8tion.jda.api.events.interaction.SlashCommandEvent; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; +import net.dv8tion.jda.api.requests.restaction.CommandListUpdateAction; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.ChatColor; @@ -21,112 +26,76 @@ public DCBDiscordListener(DiscordChatBridge plugin) { @Override - public void onMessageReceived(MessageReceivedEvent event) { - //Don't respond to bots - if (event.getAuthor().isBot() || event.isWebhookMessage()) { - return; - } - //Don't respond to funky messages - if (event.getMessage().getContentRaw().isEmpty()) { - return; - } + public void onSlashCommand(SlashCommandEvent event) { + if (event.getName().equals("online")) { + MessageBuilder messageBuilder = new MessageBuilder(); - String gameBridgeChannelID = plugin.getaConfig().getConfigString("channel-id"); - String[] messageCMD = event.getMessage().getContentRaw().split(" "); - //sorry for the mess of copy pasting the code into each if statement -Owen2k6 - //Online Command - if (messageCMD[0].equalsIgnoreCase("!online") && plugin.getaConfig().getConfigBoolean("online-command-enabled")) { - - //Check for if its enabled. - if (plugin.getaConfig().getConfigBoolean("bot-command-channel-enabled")) { - //Does it match? - if (Objects.equals(plugin.getaConfig().getConfigString("bot-command-channel-id"), event.getChannel().getId())) { - //begin Online Command Response - String onlineMessage = "**The online players are:** "; - for (Player p : Bukkit.getServer().getOnlinePlayers()) { - onlineMessage += p.getName() + ", "; - } - EmbedBuilder eb = new EmbedBuilder(); - eb.setTitle(plugin.getaConfig().getConfigString("server-name") + " Online Players", null); - if (Bukkit.getServer().getOnlinePlayers().length > 0) { - int rnd = new Random().nextInt(Bukkit.getServer().getOnlinePlayers().length); - Player player = Bukkit.getServer().getOnlinePlayers()[rnd]; - eb.setThumbnail("http://minotar.net/helm/" + player.getName() + "/100.png"); - } - eb.setColor(Color.red); - eb.setDescription("There are currently **" + Bukkit.getServer().getOnlinePlayers().length - + "** players online\n" + onlineMessage); - eb.setFooter("https://github.com/RhysB/Discord-Bot-Chatbridge", - "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png"); - - event.getChannel().sendMessage(eb.build()).queue(); - return; - } - if (plugin.getaConfig().getConfigString("bot-command-channel-id").isEmpty() || Objects.equals(plugin.getaConfig().getConfigString("bot-command-channel-id"), "id")) { - Bukkit.getLogger().warning("You appear to have forgotten to add a channel ID. go to the config and add an ID or disable the bot command channel limiter"); - Bukkit.getLogger().info("Will proceed like the feature is disabled."); - //begin Online Command Response - String onlineMessage = "**The online players are:** "; - for (Player p : Bukkit.getServer().getOnlinePlayers()) { - onlineMessage += p.getName() + ", "; - } - EmbedBuilder eb = new EmbedBuilder(); - eb.setTitle(plugin.getaConfig().getConfigString("server-name") + " Online Players", null); - if (Bukkit.getServer().getOnlinePlayers().length > 0) { - int rnd = new Random().nextInt(Bukkit.getServer().getOnlinePlayers().length); - Player player = Bukkit.getServer().getOnlinePlayers()[rnd]; - eb.setThumbnail("http://minotar.net/helm/" + player.getName() + "/100.png"); - } - eb.setColor(Color.red); - eb.setDescription("There are currently **" + Bukkit.getServer().getOnlinePlayers().length - + "** players online\n" + onlineMessage); - eb.setFooter("https://github.com/RhysB/Discord-Bot-Chatbridge", - "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png"); - - event.getChannel().sendMessage(eb.build()).queue(); - return; + String onlineMessage = "**The online players are:** "; + if (Bukkit.getServer().getOnlinePlayers().length == 1) { + for (Player p : Bukkit.getServer().getOnlinePlayers()) { + onlineMessage += p.getName(); } - - } - //Check for if it's not enabled - if (!plugin.getaConfig().getConfigBoolean("bot-command-channel-enabled")) { - //begin Online Command Response - String onlineMessage = "**The online players are:** "; + } else { for (Player p : Bukkit.getServer().getOnlinePlayers()) { onlineMessage += p.getName() + ", "; } - EmbedBuilder eb = new EmbedBuilder(); - eb.setTitle(plugin.getaConfig().getConfigString("server-name") + " Online Players", null); + } + EmbedBuilder eb = new EmbedBuilder(); + if(Bukkit.getServer().getOnlinePlayers().length == 0) + { + eb.setTitle(plugin.getConfig().getConfigString("server-name"), null); + eb.setColor(Color.red); + eb.setDescription("There are currently no players online."); + eb.setFooter("https://github.com/RhysB/Discord-Bot-Chatbridge", + "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png"); + } + else { + eb.setTitle(plugin.getConfig().getConfigString("server-name") + " Online Players", null); if (Bukkit.getServer().getOnlinePlayers().length > 0) { int rnd = new Random().nextInt(Bukkit.getServer().getOnlinePlayers().length); Player player = Bukkit.getServer().getOnlinePlayers()[rnd]; eb.setThumbnail("http://minotar.net/helm/" + player.getName() + "/100.png"); } - eb.setColor(Color.red); + eb.setColor(Color.green); eb.setDescription("There are currently **" + Bukkit.getServer().getOnlinePlayers().length + "** players online\n" + onlineMessage); eb.setFooter("https://github.com/RhysB/Discord-Bot-Chatbridge", "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png"); - - event.getChannel().sendMessage(eb.build()).queue(); - return; } + + messageBuilder.setEmbeds(eb.build()); + event.reply(messageBuilder.build()).setEphemeral(true).queue(); } + } + @Override + public void onMessageReceived(MessageReceivedEvent event) { + //Don't respond to bots + if (event.getAuthor().isBot() || event.isWebhookMessage()) { + return; + } + //Don't respond to funky messages + if (event.getMessage().getContentRaw().isEmpty()) { + return; + } + + String gameBridgeChannelID = plugin.getConfig().getConfigString("channel-id"); + String[] messageCMD = event.getMessage().getContentRaw().split(" "); //Is the message in the game bridge channel if (event.getChannel().getId().equalsIgnoreCase(gameBridgeChannelID)) { String displayName = null; + String dmsg = event.getMessage().getContentRaw(); - if (plugin.getaConfig().getConfigBoolean("authentication.enabled")) { + if (plugin.getConfig().getConfigBoolean("authentication.enabled")) { DiscordAuthentication authPlugin = (DiscordAuthentication) Bukkit.getServer().getPluginManager().getPlugin("DiscordAuthentication"); - if (plugin.getaConfig().getConfigBoolean("authentication.discord.only-allow-linked-users")) { + if (plugin.getConfig().getConfigBoolean("authentication.discord.only-allow-linked-users")) { if (!authPlugin.getData().isDiscordIDAlreadyLinked(event.getAuthor().getId())) { event.getChannel().sendMessage(plugin.getConfig().getString("message.require-link")).queue(); return; } } - if (plugin.getaConfig().getConfigBoolean("authentication.discord.use-in-game-names-if-available")) { + if (plugin.getConfig().getConfigBoolean("authentication.discord.use-in-game-names-if-available")) { displayName = authPlugin.getData().getLastUsernameFromDiscordID(event.getAuthor().getId()); } @@ -139,7 +108,7 @@ public void onMessageReceived(MessageReceivedEvent event) { displayName = event.getAuthor().getName(); } } - String chatMessage = plugin.getaConfig().getConfigString("message.discord-chat-message"); + String chatMessage = plugin.getConfig().getConfigString("message.discord-chat-message"); chatMessage = chatMessage.replace("%messageAuthor%", displayName); chatMessage = chatMessage.replace("%message%", dmsg); chatMessage = chatMessage.replaceAll("(&([a-f0-9]))", "\u00A7$2"); diff --git a/src/com/johnymuffin/beta/discordchatbridge/DCBGameListener.java b/src/com/johnymuffin/beta/discordchatbridge/DCBGameListener.java index f350dc7..5895431 100644 --- a/src/com/johnymuffin/beta/discordchatbridge/DCBGameListener.java +++ b/src/com/johnymuffin/beta/discordchatbridge/DCBGameListener.java @@ -19,20 +19,20 @@ public DCBGameListener(DiscordChatBridge plugin) { @Override public void onPlayerJoin(PlayerJoinEvent event) { - String chatMessage = plugin.getaConfig().getConfigString("message.join-message"); + String chatMessage = plugin.getConfig().getConfigString("message.join-message"); chatMessage = chatMessage.replace("%username%", event.getPlayer().getName()); chatMessage = chatMessage.replace("%onlineCount%", String.valueOf(Bukkit.getServer().getOnlinePlayers().length)); chatMessage = chatMessage.replace("%maxCount%", String.valueOf(Bukkit.getServer().getMaxPlayers())); - plugin.getDiscordCore().getDiscordBot().discordSendToChannel(plugin.getaConfig().getConfigString("channel-id"), chatMessage); + plugin.getDiscordCore().getDiscordBot().discordSendToChannel(plugin.getConfig().getConfigString("channel-id"), chatMessage); } @Override public void onPlayerQuit(PlayerQuitEvent event) { - String chatMessage = plugin.getaConfig().getConfigString("message.quit-message"); + String chatMessage = plugin.getConfig().getConfigString("message.quit-message"); chatMessage = chatMessage.replace("%username%", event.getPlayer().getName()); chatMessage = chatMessage.replace("%onlineCount%", String.valueOf(Bukkit.getServer().getOnlinePlayers().length - 1)); chatMessage = chatMessage.replace("%maxCount%", String.valueOf(Bukkit.getServer().getMaxPlayers())); - plugin.getDiscordCore().getDiscordBot().discordSendToChannel(plugin.getaConfig().getConfigString("channel-id"), chatMessage); + plugin.getDiscordCore().getDiscordBot().discordSendToChannel(plugin.getConfig().getConfigString("channel-id"), chatMessage); } @Override @@ -41,8 +41,8 @@ public void onPlayerChat(PlayerChatEvent event) { return; } - if (plugin.getaConfig().getConfigBoolean("webhook.use-webhook")) { - final DiscordWebhook webhookMessage = new DiscordWebhook(plugin.getaConfig().getConfigString("webhook.url")); + if (plugin.getConfig().getConfigBoolean("webhook.use-webhook")) { + final DiscordWebhook webhookMessage = new DiscordWebhook(plugin.getConfig().getConfigString("webhook.url")); webhookMessage.setUsername(event.getPlayer().getName()); webhookMessage.setContent(sanitizeMessage(event.getMessage())); webhookMessage.setAvatarUrl("http://minotar.net/helm/" + event.getPlayer().getName() + "/100.png"); @@ -56,11 +56,11 @@ public void onPlayerChat(PlayerChatEvent event) { }, 0L); } else { - String chatMessage = plugin.getaConfig().getConfigString("message.game-chat-message"); + String chatMessage = plugin.getConfig().getConfigString("message.game-chat-message"); chatMessage = chatMessage.replace("%messageAuthor%", event.getPlayer().getName()); chatMessage = chatMessage.replace("%message%", event.getMessage()); chatMessage = sanitizeMessage(chatMessage); - plugin.getDiscordCore().getDiscordBot().discordSendToChannel(plugin.getaConfig().getConfigString("channel-id"), chatMessage); + plugin.getDiscordCore().getDiscordBot().discordSendToChannel(plugin.getConfig().getConfigString("channel-id"), chatMessage); } } diff --git a/src/com/johnymuffin/beta/discordchatbridge/DiscordChatBridge.java b/src/com/johnymuffin/beta/discordchatbridge/DiscordChatBridge.java index f8ce425..3136640 100644 --- a/src/com/johnymuffin/beta/discordchatbridge/DiscordChatBridge.java +++ b/src/com/johnymuffin/beta/discordchatbridge/DiscordChatBridge.java @@ -5,6 +5,8 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Activity; import net.dv8tion.jda.api.entities.TextChannel; +import net.dv8tion.jda.api.interactions.commands.build.CommandData; +import net.dv8tion.jda.api.requests.restaction.CommandListUpdateAction; import org.bukkit.Bukkit; import org.bukkit.event.CustomEventListener; import org.bukkit.event.Event; @@ -90,7 +92,7 @@ public void onEnable() { if (dcbConfig.getConfigBoolean("system.starting-message.enable")) { Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { String message = dcbConfig.getConfigString("system.starting-message.message"); - message = message.replace("{servername}", getaConfig().getConfigString("server-name")); + message = message.replace("{servername}", getConfig().getConfigString("server-name")); getDiscordCore().getDiscordBot().discordSendToChannel(dcbConfig.getConfigString("channel-id"), message); }, 0L); } @@ -98,13 +100,21 @@ public void onEnable() { if (dcbConfig.getConfigBoolean("presence-player-count")) { taskID = this.getServer().getScheduler().scheduleSyncRepeatingTask(this, () -> { if (getDiscordCore().getDiscordBot().jda.getStatus() == JDA.Status.CONNECTED) { - getDiscordCore().getDiscordBot().jda.getPresence().setActivity(Activity.playing(plugin.getaConfig().getConfigString("server-name") + " With " + Bukkit.getServer().getOnlinePlayers().length + " Players")); + getDiscordCore().getDiscordBot().jda.getPresence().setActivity(Activity.playing(plugin.getConfig().getConfigString("server-name") + " With " + Bukkit.getServer().getOnlinePlayers().length + " Players")); } }, 0L, 20 * 60); } + CommandListUpdateAction commands = getDiscordCore().getDiscordBot().jda.updateCommands(); + + commands.addCommands( + new CommandData("online", "List all online players.") + ); + + commands.queue(); + } @Override @@ -128,7 +138,7 @@ public void logger(Level level, String message) { } - public DCBConfig getaConfig() { + public DCBConfig getConfig() { return dcbConfig; } @@ -139,10 +149,10 @@ public DiscordCore getDiscordCore() { protected void handleDiscordCoreShutdown() { //Discord Shutdown Message shutdown = true; - if (getaConfig().getConfigBoolean("system.shutdown-message.enable")) { - String message = getaConfig().getConfigString("system.shutdown-message.message"); - message = message.replace("{servername}", getaConfig().getConfigString("server-name")); - TextChannel textChannel = this.discordCore.getDiscordBot().jda.getTextChannelById(plugin.getaConfig().getConfigString("channel-id")); + if (getConfig().getConfigBoolean("system.shutdown-message.enable")) { + String message = getConfig().getConfigString("system.shutdown-message.message"); + message = message.replace("{servername}", getConfig().getConfigString("server-name")); + TextChannel textChannel = this.discordCore.getDiscordBot().jda.getTextChannelById(plugin.getConfig().getConfigString("channel-id")); textChannel.sendMessage(message).complete(); } }