From 87f5522683c0ea8c0c46b416c2fc2df6d442fb0f Mon Sep 17 00:00:00 2001 From: ungarscool1 Date: Tue, 18 Aug 2020 18:07:46 +0200 Subject: [PATCH] Refactor code --- .../com/github/ungarscool1/Roboto/Main.java | 49 ++++----- .../ungarscool1/Roboto/ServerLanguage.java | 6 +- .../listeners/commands/AdminCommand.java | 102 ------------------ .../listeners/commands/GameCommand.java | 2 - .../listeners/commands/UtilsCommand.java | 19 ---- .../commands/admin/AdminHelpCommand.java | 28 +++++ .../listeners/commands/admin/BanCommand.java | 61 +++++++++++ .../listeners/commands/admin/LangCommand.java | 40 +++++++ .../commands/owner/ChangeGameCommand.java | 29 +++++ .../commands/owner/MaintenanceCommand.java | 33 ++++++ .../commands/owner/OwnerInfoCommand.java | 32 ++++++ .../listeners/servers/JoinListener.java | 22 ++++ .../listeners/servers/LeaveListener.java | 20 ++++ 13 files changed, 293 insertions(+), 150 deletions(-) delete mode 100644 src/main/java/com/github/ungarscool1/Roboto/listeners/commands/AdminCommand.java create mode 100644 src/main/java/com/github/ungarscool1/Roboto/listeners/commands/admin/AdminHelpCommand.java create mode 100644 src/main/java/com/github/ungarscool1/Roboto/listeners/commands/admin/BanCommand.java create mode 100644 src/main/java/com/github/ungarscool1/Roboto/listeners/commands/admin/LangCommand.java create mode 100644 src/main/java/com/github/ungarscool1/Roboto/listeners/commands/owner/ChangeGameCommand.java create mode 100644 src/main/java/com/github/ungarscool1/Roboto/listeners/commands/owner/MaintenanceCommand.java create mode 100644 src/main/java/com/github/ungarscool1/Roboto/listeners/commands/owner/OwnerInfoCommand.java create mode 100644 src/main/java/com/github/ungarscool1/Roboto/listeners/servers/JoinListener.java create mode 100644 src/main/java/com/github/ungarscool1/Roboto/listeners/servers/LeaveListener.java diff --git a/src/main/java/com/github/ungarscool1/Roboto/Main.java b/src/main/java/com/github/ungarscool1/Roboto/Main.java index d30ac6b..00dbe3b 100644 --- a/src/main/java/com/github/ungarscool1/Roboto/Main.java +++ b/src/main/java/com/github/ungarscool1/Roboto/Main.java @@ -3,7 +3,14 @@ import java.util.HashMap; import java.util.Locale; -import com.github.ungarscool1.Roboto.listeners.commands.AdminCommand; +import com.github.ungarscool1.Roboto.listeners.commands.admin.AdminHelpCommand; +import com.github.ungarscool1.Roboto.listeners.commands.admin.BanCommand; +import com.github.ungarscool1.Roboto.listeners.commands.admin.LangCommand; +import com.github.ungarscool1.Roboto.listeners.commands.owner.ChangeGameCommand; +import com.github.ungarscool1.Roboto.listeners.commands.owner.MaintenanceCommand; +import com.github.ungarscool1.Roboto.listeners.commands.owner.OwnerInfoCommand; +import com.github.ungarscool1.Roboto.listeners.servers.JoinListener; +import com.github.ungarscool1.Roboto.listeners.servers.LeaveListener; import org.discordbots.api.client.DiscordBotListAPI; import org.javacord.api.DiscordApi; import org.javacord.api.DiscordApiBuilder; @@ -19,7 +26,7 @@ public class Main { public static HashMap locByServ = new HashMap<>(); - private static DiscordBotListAPI dbl; + public static DiscordBotListAPI dbl; public static void main(String[] args) { new DiscordApiBuilder() @@ -48,37 +55,31 @@ private static void onShardLogin(DiscordApi api) { l = serverLanguage.getServerLanguage(server).split("_"); locByServ.put(server, new Locale(l[0], l[1])); } catch (Exception e) { - // Set by default english if not found - System.err.println("Le serveur " + server.getName() + " ( " + server.getIdAsString() + " )" + " n'a pas été trouvé"); locByServ.put(server, new Locale("en", "US")); new ServerLanguage().addServer(server); } - - api.updateActivity(ActivityType.LISTENING, api.getServers().size() + " servers"); }); - api.addServerJoinListener(event -> { - ServerLanguage serverLanguage = new ServerLanguage(); - locByServ.put(event.getServer(), new Locale("en", "US")); - serverLanguage.addServer(event.getServer()); - api.updateActivity(ActivityType.LISTENING, api.getServers().size() + " servers"); - dbl.setStats(api.getCurrentShard(), api.getTotalShards(), api.getServers().size()); - }); - - api.addServerLeaveListener(event -> { - ServerLanguage serverLanguage = new ServerLanguage(); - locByServ.remove(event.getServer()); - serverLanguage.removeServer(event.getServer()); - api.updateActivity(ActivityType.LISTENING, api.getServers().size() + " servers"); - dbl.setStats(api.getCurrentShard(), api.getTotalShards(), api.getServers().size()); - }); + api.addServerJoinListener(new JoinListener()); + api.addServerLeaveListener(new LeaveListener()); api.addMessageCreateListener(new VoteCommand()); api.addMessageCreateListener(new GameCommand(api)); api.addMessageCreateListener(new UtilsCommand(api)); - api.addMessageCreateListener(new AdminCommand()); - - api.addReactionAddListener(new ReacListener()); + /** + * Admin commands + */ + api.addMessageCreateListener(new AdminHelpCommand()); + api.addMessageCreateListener(new BanCommand()); + api.addMessageCreateListener(new LangCommand()); + /** + * Owner commands + */ + api.addMessageCreateListener(new ChangeGameCommand()); + api.addMessageCreateListener(new MaintenanceCommand()); + api.addMessageCreateListener(new OwnerInfoCommand()); + + api.addReactionAddListener(new ReacListener()); } diff --git a/src/main/java/com/github/ungarscool1/Roboto/ServerLanguage.java b/src/main/java/com/github/ungarscool1/Roboto/ServerLanguage.java index 37592b5..1c635b9 100644 --- a/src/main/java/com/github/ungarscool1/Roboto/ServerLanguage.java +++ b/src/main/java/com/github/ungarscool1/Roboto/ServerLanguage.java @@ -41,7 +41,7 @@ public void setServerLanguage(Server server, String lang) { } } - String getServerLanguage(Server server) { + public String getServerLanguage(Server server) { JsonObject object = gson.fromJson(reader, JsonObject.class); String lang; try { @@ -54,7 +54,7 @@ String getServerLanguage(Server server) { return lang; } - void addServer(Server server) { + public void addServer(Server server) { JsonObject object = gson.fromJson(reader, JsonObject.class); object.addProperty(server.getIdAsString(), "en_US"); try (Writer writer = new FileWriter("serversLanguage.json")) { @@ -64,7 +64,7 @@ void addServer(Server server) { } } - void removeServer(Server server) { + public void removeServer(Server server) { JsonObject object = gson.fromJson(reader,JsonObject.class); object.remove(server.getIdAsString()); try (Writer writer = new FileWriter("serversLanguage.json")) { diff --git a/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/AdminCommand.java b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/AdminCommand.java deleted file mode 100644 index eb14795..0000000 --- a/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/AdminCommand.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.github.ungarscool1.Roboto.listeners.commands; - -import com.github.ungarscool1.Roboto.Main; -import org.javacord.api.DiscordApi; -import org.javacord.api.entity.activity.ActivityType; -import org.javacord.api.entity.message.Message; -import org.javacord.api.entity.message.embed.EmbedBuilder; -import org.javacord.api.entity.user.User; -import org.javacord.api.entity.user.UserStatus; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -import java.awt.*; -import java.util.Locale; -import java.util.ResourceBundle; - -public class AdminCommand implements MessageCreateListener { - public void onMessageCreate(MessageCreateEvent event) { - Message message = event.getMessage(); - ResourceBundle language = ResourceBundle.getBundle("lang.lang", Main.locByServ.get(message.getServer().get())); - if (!message.getServer().isPresent() || message.getAuthor().isBotUser()) - return; - if (message.getAuthor().canBanUsersFromServer() && message.getContent().contains("@ban")) { - String[] args = message.getContent().split(" "); - EmbedBuilder embed = new EmbedBuilder(); - if (args.length == 1) - embed.setTitle(language.getString("admin.ban.name")) - .setDescription(language.getString("admin.ban.missingargs")) - .setColor(Color.RED) - .setFooter("Roboto v.3 by Ungarscool1"); - if (args.length > 1) { - User toBan = message.getMentionedUsers().get(0); - String description; - StringBuilder reason = new StringBuilder(); - if (args.length == 2) - description = String.format(language.getString("admin.ban.desc.default"), toBan.getDiscriminatedName()); - else { - for (int i = 2; i < args.length; i++) - reason.append(args[i] + " "); - description = String.format(language.getString("admin.ban.desc"), toBan.getDiscriminatedName(), reason.toString()); - } - embed.setTitle(language.getString("admin.ban.name")) - .setDescription(description) - .setAuthor(message.getAuthor()) - .setFooter("Roboto v.3 by Ungarscool1") - .setColor(Color.GREEN); - if (args.length == 2) - description = language.getString("admin.ban.toBan.desc.default"); - else - description = String.format(language.getString("admin.ban.toBan.desc"), reason.toString()); - toBan.sendMessage(new EmbedBuilder().setTitle(language.getString("admin.ban.toBan.name")) - .setDescription(description) - .setAuthor(message.getAuthor()) - .setColor(Color.RED)); - message.getChannel().sendMessage(embed); - message.getServer().get().banUser(toBan, 0, reason.toString()); - } - } - - if (message.getContent().equalsIgnoreCase("@@info") && message.getAuthor().isBotOwner()) { - System.out.println("Getting servers info..."); - EmbedBuilder embed = new EmbedBuilder(); - embed.setTitle("Informations de tout les serveurs").setDescription("Toutes les informations des serveurs sont affichés ici"); - event.getApi().getServers().forEach(server -> { - embed.addField(server.getName(), "Owner: " + server.getOwner().getDiscriminatedName() + "\nIl y a " + server.getMemberCount() + " utilisateurs sur le serveur.\nRégion: " + server.getRegion().getName() + "\nEst admin ? " + server.isAdmin(event.getApi().getYourself()) + "\nLangue du bot: " + Main.locByServ.get(server).getDisplayLanguage(Locale.FRANCE) + " - " + Main.locByServ.get(server).getDisplayCountry(Locale.FRANCE)); - }); - embed.setAuthor(event.getApi().getYourself()).setColor(Color.GREEN); - message.getChannel().sendMessage(embed); - } - - if (message.getContent().contains("@@changeGame") && message.getAuthor().isBotOwner()) { - DiscordApi api = event.getApi(); - String arg = message.getContent().substring(13); - if (arg.length() == 0) - api.updateActivity(ActivityType.LISTENING, api.getServers().size() + " servers"); - else - api.updateActivity(arg); - } - - if (message.getContent().equalsIgnoreCase("@@maintenance") && message.getAuthor().isBotOwner()) { - DiscordApi api = event.getApi(); - if (api.getStatus().equals(UserStatus.DO_NOT_DISTURB)) { - message.getChannel().sendMessage("Mode maintenance désactivé !"); - api.updateStatus(UserStatus.ONLINE); - api.updateActivity(ActivityType.LISTENING, api.getServers().size() + " servers"); - } else { - message.getChannel().sendMessage("Mode maintenance activé !"); - api.updateStatus(UserStatus.DO_NOT_DISTURB); - api.updateActivity("Maintenance mode..."); - } - } - - if (message.getAuthor().canBanUsersFromServer() && message.getContent().equalsIgnoreCase("@help")) { - EmbedBuilder embed = new EmbedBuilder(); - embed.setTitle(language.getString("admin.help.name")) - .addField(language.getString("admin.help.ban.name"), language.getString("admin.help.ban.desc")) - .addField("@lang ", language.getString("help.lang.desc")) - .setFooter("Roboto admin mode"); - message.getChannel().sendMessage(embed); - } - } -} diff --git a/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/GameCommand.java b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/GameCommand.java index 925e19b..da54af3 100644 --- a/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/GameCommand.java +++ b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/GameCommand.java @@ -28,7 +28,6 @@ public GameCommand(DiscordApi api) { public void onMessageCreate(MessageCreateEvent event) { Message message = event.getMessage(); - // Ignore if the message is sent in PM if (!message.getServer().isPresent() || message.getAuthor().isBotUser()) { return; } @@ -37,7 +36,6 @@ public void onMessageCreate(MessageCreateEvent event) { if (message.getContent().contains("!game")) { if (message.getContent().length() > 5) { - // !game pfc 10 String[] args = message.getContent().substring(6).split(" "); if (args[0].equalsIgnoreCase("pfc") || args[0].equalsIgnoreCase("rps")) { int manche = 0; diff --git a/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/UtilsCommand.java b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/UtilsCommand.java index a7dae55..4dee9fb 100644 --- a/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/UtilsCommand.java +++ b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/UtilsCommand.java @@ -66,25 +66,6 @@ public void onMessageCreate(MessageCreateEvent event) { message.getChannel().sendMessage(embed); } - if ((message.getContent().contains("@lang") || message.getContent().contains("@language") || message.getContent().contains("@langue")) && message.getAuthor().isServerAdmin()) { - EmbedBuilder embed = new EmbedBuilder(); - if (message.getContent().contains("en_US") || message.getContent().contains("fr_FR") || message.getContent().contains("es_ES")) { - String lang = message.getContent().substring(message.getContent().indexOf(" ") + 1); - lang = lang.substring(0, message.getContent().indexOf(" ")); - String[] l; - l = lang.split("_"); - new ServerLanguage().setServerLanguage(message.getServer().get(), l[0] + "_" + l[1]); - Main.locByServ.replace(message.getServer().get(), new Locale(l[0], l[1])); - language = ResourceBundle.getBundle("lang.lang", new Locale(l[0], l[1])); - embed.setTitle(language.getString("lang.changed.name")) - .setDescription(language.getString("lang.changed.desc")); - } else { - embed.setTitle(language.getString("lang.help.name")) - .addField(language.getString("lang.help.languages"), String.format("- fr_FR (%s)\n- en_US (%s)\n- es_ES (%s)", language.getString("lang.help.french.name"), language.getString("lang.help.english.name"), language.getString("lang.help.spanish.name"))); - } - message.getChannel().sendMessage(embed); - } - if (message.getContent().equalsIgnoreCase("!ver") || message.getContent().equalsIgnoreCase("!version")) { EmbedBuilder embedBuilder = new EmbedBuilder(); int users = api.getServers().stream().mapToInt(Server::getMemberCount).sum(); diff --git a/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/admin/AdminHelpCommand.java b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/admin/AdminHelpCommand.java new file mode 100644 index 0000000..0b5d822 --- /dev/null +++ b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/admin/AdminHelpCommand.java @@ -0,0 +1,28 @@ +package com.github.ungarscool1.Roboto.listeners.commands.admin; + +import com.github.ungarscool1.Roboto.Main; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.message.embed.EmbedBuilder; +import org.javacord.api.event.message.MessageCreateEvent; +import org.javacord.api.listener.message.MessageCreateListener; + +import java.util.ResourceBundle; + +public class AdminHelpCommand implements MessageCreateListener { + @Override + public void onMessageCreate(MessageCreateEvent event) { + Message message = event.getMessage(); + ResourceBundle language = ResourceBundle.getBundle("lang.lang", Main.locByServ.get(message.getServer().get())); + + if (!message.getServer().isPresent() || message.getAuthor().isBotUser()) + return; + if (message.getAuthor().canBanUsersFromServer() && message.getContent().equalsIgnoreCase("@help")) { + EmbedBuilder embed = new EmbedBuilder(); + embed.setTitle(language.getString("admin.help.name")) + .addField(language.getString("admin.help.ban.name"), language.getString("admin.help.ban.desc")) + .addField("@lang ", language.getString("help.lang.desc")) + .setFooter("Roboto admin mode"); + message.getChannel().sendMessage(embed); + } + } +} diff --git a/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/admin/BanCommand.java b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/admin/BanCommand.java new file mode 100644 index 0000000..4572fe5 --- /dev/null +++ b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/admin/BanCommand.java @@ -0,0 +1,61 @@ +package com.github.ungarscool1.Roboto.listeners.commands.admin; + +import com.github.ungarscool1.Roboto.Main; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.message.embed.EmbedBuilder; +import org.javacord.api.entity.user.User; +import org.javacord.api.event.message.MessageCreateEvent; +import org.javacord.api.listener.message.MessageCreateListener; + +import java.awt.*; +import java.util.ResourceBundle; + +public class BanCommand implements MessageCreateListener { + @Override + public void onMessageCreate(MessageCreateEvent event) { + Message message = event.getMessage(); + ResourceBundle language = ResourceBundle.getBundle("lang.lang", Main.locByServ.get(message.getServer().get())); + + if (!message.getServer().isPresent() || message.getAuthor().isBotUser()) + return; + if (message.getAuthor().canBanUsersFromServer() && message.getContent().contains("@ban")) { + String[] args = message.getContent().split(" "); + EmbedBuilder embed = new EmbedBuilder(); + if (args.length == 1) { + embed.setTitle(language.getString("admin.ban.name")) + .setDescription(language.getString("admin.ban.missingargs")) + .setColor(Color.RED) + .setFooter("Roboto v.3 by Ungarscool1"); + message.getChannel().sendMessage(embed); + return; + } + if (args.length > 1) { + User toBan = message.getMentionedUsers().get(0); + String description; + StringBuilder reason = new StringBuilder(); + if (args.length == 2) + description = String.format(language.getString("admin.ban.desc.default"), toBan.getDiscriminatedName()); + else { + for (int i = 2; i < args.length; i++) + reason.append(args[i] + " "); + description = String.format(language.getString("admin.ban.desc"), toBan.getDiscriminatedName(), reason.toString()); + } + embed.setTitle(language.getString("admin.ban.name")) + .setDescription(description) + .setAuthor(message.getAuthor()) + .setFooter("Roboto v.3 by Ungarscool1") + .setColor(Color.GREEN); + if (args.length == 2) + description = language.getString("admin.ban.toBan.desc.default"); + else + description = String.format(language.getString("admin.ban.toBan.desc"), reason.toString()); + toBan.sendMessage(new EmbedBuilder().setTitle(language.getString("admin.ban.toBan.name")) + .setDescription(description) + .setAuthor(message.getAuthor()) + .setColor(Color.RED)); + message.getChannel().sendMessage(embed); + message.getServer().get().banUser(toBan, 0, reason.toString()); + } + } + } +} diff --git a/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/admin/LangCommand.java b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/admin/LangCommand.java new file mode 100644 index 0000000..79f8d57 --- /dev/null +++ b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/admin/LangCommand.java @@ -0,0 +1,40 @@ +package com.github.ungarscool1.Roboto.listeners.commands.admin; + +import com.github.ungarscool1.Roboto.Main; +import com.github.ungarscool1.Roboto.ServerLanguage; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.message.embed.EmbedBuilder; +import org.javacord.api.event.message.MessageCreateEvent; +import org.javacord.api.listener.message.MessageCreateListener; + +import java.util.Locale; +import java.util.ResourceBundle; + +public class LangCommand implements MessageCreateListener { + @Override + public void onMessageCreate(MessageCreateEvent event) { + Message message = event.getMessage(); + ResourceBundle language = ResourceBundle.getBundle("lang.lang", Main.locByServ.get(message.getServer().get())); + + if (!message.getServer().isPresent() || message.getAuthor().isBotUser()) + return; + if ((message.getContent().contains("@lang") || message.getContent().contains("@language") || message.getContent().contains("@langue")) && message.getAuthor().isServerAdmin()) { + EmbedBuilder embed = new EmbedBuilder(); + if (message.getContent().contains("en_US") || message.getContent().contains("fr_FR") || message.getContent().contains("es_ES")) { + String lang = message.getContent().substring(message.getContent().indexOf(" ") + 1); + lang = lang.substring(0, message.getContent().indexOf(" ")); + String[] l; + l = lang.split("_"); + new ServerLanguage().setServerLanguage(message.getServer().get(), l[0] + "_" + l[1]); + Main.locByServ.replace(message.getServer().get(), new Locale(l[0], l[1])); + language = ResourceBundle.getBundle("lang.lang", new Locale(l[0], l[1])); + embed.setTitle(language.getString("lang.changed.name")) + .setDescription(language.getString("lang.changed.desc")); + } else { + embed.setTitle(language.getString("lang.help.name")) + .addField(language.getString("lang.help.languages"), String.format("- fr_FR (%s)\n- en_US (%s)\n- es_ES (%s)", language.getString("lang.help.french.name"), language.getString("lang.help.english.name"), language.getString("lang.help.spanish.name"))); + } + message.getChannel().sendMessage(embed); + } + } +} diff --git a/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/owner/ChangeGameCommand.java b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/owner/ChangeGameCommand.java new file mode 100644 index 0000000..87c7b2a --- /dev/null +++ b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/owner/ChangeGameCommand.java @@ -0,0 +1,29 @@ +package com.github.ungarscool1.Roboto.listeners.commands.owner; + +import com.github.ungarscool1.Roboto.Main; +import org.javacord.api.DiscordApi; +import org.javacord.api.entity.activity.ActivityType; +import org.javacord.api.entity.message.Message; +import org.javacord.api.event.message.MessageCreateEvent; +import org.javacord.api.listener.message.MessageCreateListener; + +import java.util.ResourceBundle; + +public class ChangeGameCommand implements MessageCreateListener { + @Override + public void onMessageCreate(MessageCreateEvent event) { + Message message = event.getMessage(); + ResourceBundle language = ResourceBundle.getBundle("lang.lang", Main.locByServ.get(message.getServer().get())); + + if (!message.getServer().isPresent() || message.getAuthor().isBotUser()) + return; + if (message.getContent().contains("@@changeGame") && message.getAuthor().isBotOwner()) { + DiscordApi api = event.getApi(); + String arg = message.getContent().substring(13); + if (arg.length() == 0) + api.updateActivity(ActivityType.LISTENING, api.getServers().size() + " servers"); + else + api.updateActivity(arg); + } + } +} diff --git a/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/owner/MaintenanceCommand.java b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/owner/MaintenanceCommand.java new file mode 100644 index 0000000..42d0c73 --- /dev/null +++ b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/owner/MaintenanceCommand.java @@ -0,0 +1,33 @@ +package com.github.ungarscool1.Roboto.listeners.commands.owner; + +import com.github.ungarscool1.Roboto.Main; +import org.javacord.api.DiscordApi; +import org.javacord.api.entity.activity.ActivityType; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.user.UserStatus; +import org.javacord.api.event.message.MessageCreateEvent; +import org.javacord.api.listener.message.MessageCreateListener; + +import java.util.ResourceBundle; + +public class MaintenanceCommand implements MessageCreateListener { + @Override + public void onMessageCreate(MessageCreateEvent event) { + Message message = event.getMessage(); + + if (!message.getServer().isPresent() || message.getAuthor().isBotUser()) + return; + if (message.getContent().equalsIgnoreCase("@@maintenance") && message.getAuthor().isBotOwner()) { + DiscordApi api = event.getApi(); + if (api.getStatus().equals(UserStatus.DO_NOT_DISTURB)) { + message.getChannel().sendMessage("Mode maintenance désactivé !"); + api.updateStatus(UserStatus.ONLINE); + api.updateActivity(ActivityType.LISTENING, api.getServers().size() + " servers"); + } else { + message.getChannel().sendMessage("Mode maintenance activé !"); + api.updateStatus(UserStatus.DO_NOT_DISTURB); + api.updateActivity("Maintenance mode..."); + } + } + } +} diff --git a/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/owner/OwnerInfoCommand.java b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/owner/OwnerInfoCommand.java new file mode 100644 index 0000000..4b4039b --- /dev/null +++ b/src/main/java/com/github/ungarscool1/Roboto/listeners/commands/owner/OwnerInfoCommand.java @@ -0,0 +1,32 @@ +package com.github.ungarscool1.Roboto.listeners.commands.owner; + +import com.github.ungarscool1.Roboto.Main; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.message.embed.EmbedBuilder; +import org.javacord.api.event.message.MessageCreateEvent; +import org.javacord.api.listener.message.MessageCreateListener; + +import java.awt.*; +import java.util.Locale; +import java.util.ResourceBundle; + +public class OwnerInfoCommand implements MessageCreateListener { + @Override + public void onMessageCreate(MessageCreateEvent event) { + Message message = event.getMessage(); + ResourceBundle language = ResourceBundle.getBundle("lang.lang", Main.locByServ.get(message.getServer().get())); + + if (!message.getServer().isPresent() || message.getAuthor().isBotUser()) + return; + if (message.getContent().equalsIgnoreCase("@@info") && message.getAuthor().isBotOwner()) { + System.out.println("Getting servers info..."); + EmbedBuilder embed = new EmbedBuilder(); + embed.setTitle("Informations de tout les serveurs").setDescription("Toutes les informations des serveurs sont affichés ici"); + event.getApi().getServers().forEach(server -> { + embed.addField(server.getName(), "Owner: " + server.getOwner().getDiscriminatedName() + "\nIl y a " + server.getMemberCount() + " utilisateurs sur le serveur.\nRégion: " + server.getRegion().getName() + "\nEst admin ? " + server.isAdmin(event.getApi().getYourself()) + "\nLangue du bot: " + Main.locByServ.get(server).getDisplayLanguage(Locale.FRANCE) + " - " + Main.locByServ.get(server).getDisplayCountry(Locale.FRANCE)); + }); + embed.setAuthor(event.getApi().getYourself()).setColor(Color.GREEN); + message.getChannel().sendMessage(embed); + } + } +} diff --git a/src/main/java/com/github/ungarscool1/Roboto/listeners/servers/JoinListener.java b/src/main/java/com/github/ungarscool1/Roboto/listeners/servers/JoinListener.java new file mode 100644 index 0000000..6d957ab --- /dev/null +++ b/src/main/java/com/github/ungarscool1/Roboto/listeners/servers/JoinListener.java @@ -0,0 +1,22 @@ +package com.github.ungarscool1.Roboto.listeners.servers; + +import com.github.ungarscool1.Roboto.Main; +import com.github.ungarscool1.Roboto.ServerLanguage; +import org.javacord.api.DiscordApi; +import org.javacord.api.entity.activity.ActivityType; +import org.javacord.api.event.server.ServerJoinEvent; +import org.javacord.api.listener.server.ServerJoinListener; + +import java.util.Locale; + +public class JoinListener implements ServerJoinListener { + @Override + public void onServerJoin(ServerJoinEvent event) { + DiscordApi api = event.getApi(); + ServerLanguage serverLanguage = new ServerLanguage(); + Main.locByServ.put(event.getServer(), new Locale("en", "US")); + serverLanguage.addServer(event.getServer()); + api.updateActivity(ActivityType.LISTENING, api.getServers().size() + " servers"); + Main.dbl.setStats(api.getCurrentShard(), api.getTotalShards(), api.getServers().size()); + } +} diff --git a/src/main/java/com/github/ungarscool1/Roboto/listeners/servers/LeaveListener.java b/src/main/java/com/github/ungarscool1/Roboto/listeners/servers/LeaveListener.java new file mode 100644 index 0000000..896cb03 --- /dev/null +++ b/src/main/java/com/github/ungarscool1/Roboto/listeners/servers/LeaveListener.java @@ -0,0 +1,20 @@ +package com.github.ungarscool1.Roboto.listeners.servers; + +import com.github.ungarscool1.Roboto.ServerLanguage; +import com.github.ungarscool1.Roboto.Main; +import org.javacord.api.DiscordApi; +import org.javacord.api.entity.activity.ActivityType; +import org.javacord.api.event.server.ServerLeaveEvent; +import org.javacord.api.listener.server.ServerLeaveListener; + +public class LeaveListener implements ServerLeaveListener { + @Override + public void onServerLeave(ServerLeaveEvent event) { + DiscordApi api = event.getApi(); + ServerLanguage serverLanguage = new ServerLanguage(); + Main.locByServ.remove(event.getServer()); + serverLanguage.removeServer(event.getServer()); + api.updateActivity(ActivityType.LISTENING, api.getServers().size() + " servers"); + Main.dbl.setStats(api.getCurrentShard(), api.getTotalShards(), api.getServers().size()); + } +}