Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 48 additions & 79 deletions src/com/johnymuffin/beta/discordchatbridge/DCBDiscordListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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());
}

Expand All @@ -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");
Expand Down
16 changes: 8 additions & 8 deletions src/com/johnymuffin/beta/discordchatbridge/DCBGameListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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");
Expand All @@ -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);
}
}

Expand Down
24 changes: 17 additions & 7 deletions src/com/johnymuffin/beta/discordchatbridge/DiscordChatBridge.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -90,21 +92,29 @@ 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);
}

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
Expand All @@ -128,7 +138,7 @@ public void logger(Level level, String message) {
}


public DCBConfig getaConfig() {
public DCBConfig getConfig() {
return dcbConfig;
}

Expand All @@ -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();
}
}
Expand Down