From 50bf6555f65adc2cd9deed30393f5bf0b952f345 Mon Sep 17 00:00:00 2001 From: NovaFox161 Date: Tue, 13 Feb 2018 13:23:04 -0600 Subject: [PATCH] Cleaning up bot site updaters. --- pom.xml | 6 +++ .../com/cloudcraftgaming/discal/Main.java | 4 +- .../discal/api/object/BotSettings.java | 2 +- .../network/discordbots/UpdateDisBotData.java | 38 +++++++++++++++++++ .../network/discordpw/TimedUpdate.java | 18 --------- ...dateListData.java => UpdateDisPwData.java} | 29 +++++++++----- .../internal/service/ApplicationHandler.java | 4 ++ .../bot/internal/service/TimeManager.java | 4 +- .../bot/listeners/ReadyEventListener.java | 7 +++- 9 files changed, 76 insertions(+), 36 deletions(-) create mode 100644 src/main/java/com/cloudcraftgaming/discal/bot/internal/network/discordbots/UpdateDisBotData.java delete mode 100644 src/main/java/com/cloudcraftgaming/discal/bot/internal/network/discordpw/TimedUpdate.java rename src/main/java/com/cloudcraftgaming/discal/bot/internal/network/discordpw/{UpdateListData.java => UpdateDisPwData.java} (72%) diff --git a/pom.xml b/pom.xml index 7da24ac5..cd358671 100644 --- a/pom.xml +++ b/pom.xml @@ -39,6 +39,12 @@ logback-classic 1.1.7 + + + com.github.DiscordBotList + Java-Wrapper + v1.0 + com.google.api-client diff --git a/src/main/java/com/cloudcraftgaming/discal/Main.java b/src/main/java/com/cloudcraftgaming/discal/Main.java index 23000650..f3c34bca 100644 --- a/src/main/java/com/cloudcraftgaming/discal/Main.java +++ b/src/main/java/com/cloudcraftgaming/discal/Main.java @@ -6,7 +6,7 @@ import com.cloudcraftgaming.discal.api.network.google.Authorization; import com.cloudcraftgaming.discal.api.object.BotSettings; import com.cloudcraftgaming.discal.api.utils.ExceptionHandler; import com.cloudcraftgaming.discal.bot.internal.consolecommand.ConsoleCommandExecutor; -import com.cloudcraftgaming.discal.bot.internal.network.discordpw.UpdateListData; +import com.cloudcraftgaming.discal.bot.internal.network.discordpw.UpdateDisPwData; import com.cloudcraftgaming.discal.bot.listeners.ReadyEventListener; import com.cloudcraftgaming.discal.bot.module.command.*; import com.cloudcraftgaming.discal.web.utils.SparkUtils; @@ -41,7 +41,7 @@ public class Main { if (client == null) throw new NullPointerException("Failed to log in! Client cannot be null!"); - UpdateListData.init(); + UpdateDisPwData.init(); Authorization.getAuth().init(); diff --git a/src/main/java/com/cloudcraftgaming/discal/api/object/BotSettings.java b/src/main/java/com/cloudcraftgaming/discal/api/object/BotSettings.java index 9f75a4aa..171ca3e4 100644 --- a/src/main/java/com/cloudcraftgaming/discal/api/object/BotSettings.java +++ b/src/main/java/com/cloudcraftgaming/discal/api/object/BotSettings.java @@ -10,7 +10,7 @@ import java.util.Properties; public enum BotSettings { SQL_HOST, SQL_USER, SQL_PASSWORD, SQL_DB, SQL_PORT, SQL_PREFIX, TOKEN, SECRET, ID, - LANG_PATH, PW_TOKEN, GOOGLE_CLIENT_ID, + LANG_PATH, PW_TOKEN, DBO_TOKEN, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, RUN_API, PORT; private String val; diff --git a/src/main/java/com/cloudcraftgaming/discal/bot/internal/network/discordbots/UpdateDisBotData.java b/src/main/java/com/cloudcraftgaming/discal/bot/internal/network/discordbots/UpdateDisBotData.java new file mode 100644 index 00000000..7de2642f --- /dev/null +++ b/src/main/java/com/cloudcraftgaming/discal/bot/internal/network/discordbots/UpdateDisBotData.java @@ -0,0 +1,38 @@ +package com.cloudcraftgaming.discal.bot.internal.network.discordbots; + +import com.cloudcraftgaming.discal.Main; +import com.cloudcraftgaming.discal.api.object.BotSettings; +import org.discordbots.api.client.DiscordBotListAPI; + +import java.util.Timer; +import java.util.TimerTask; + +/** + * Created by Nova Fox on 2/13/18. + * Website: www.cloudcraftgaming.com + * For Project: DisCal-Discord-Bot + */ +public class UpdateDisBotData { + private static DiscordBotListAPI api; + private static Timer timer; + + public static void init() { + api = new DiscordBotListAPI.Builder().token(BotSettings.DBO_TOKEN.get()).build(); + + timer = new Timer(true); + timer.schedule(new TimerTask() { + @Override + public void run() { + updateStats(); + } + }, 60 * 60 * 1000); + } + + public static void shutdown() { + timer.cancel(); + } + + private static void updateStats() { + api.setStats(BotSettings.ID.get(), Main.client.getGuilds().size()); + } +} \ No newline at end of file diff --git a/src/main/java/com/cloudcraftgaming/discal/bot/internal/network/discordpw/TimedUpdate.java b/src/main/java/com/cloudcraftgaming/discal/bot/internal/network/discordpw/TimedUpdate.java deleted file mode 100644 index 71441b44..00000000 --- a/src/main/java/com/cloudcraftgaming/discal/bot/internal/network/discordpw/TimedUpdate.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.cloudcraftgaming.discal.bot.internal.network.discordpw; - -import java.util.TimerTask; - -/** - * Created by Nova Fox on 3/28/2017. - * Website: www.cloudcraftgaming.com - * For Project: DisCal - */ -public class TimedUpdate extends TimerTask { - /** - * The action to be performed by this timer task. - */ - @Override - public void run() { - UpdateListData.updateSiteBotMeta(); - } -} \ No newline at end of file diff --git a/src/main/java/com/cloudcraftgaming/discal/bot/internal/network/discordpw/UpdateListData.java b/src/main/java/com/cloudcraftgaming/discal/bot/internal/network/discordpw/UpdateDisPwData.java similarity index 72% rename from src/main/java/com/cloudcraftgaming/discal/bot/internal/network/discordpw/UpdateListData.java rename to src/main/java/com/cloudcraftgaming/discal/bot/internal/network/discordpw/UpdateDisPwData.java index 8a9cabb9..c8684727 100644 --- a/src/main/java/com/cloudcraftgaming/discal/bot/internal/network/discordpw/UpdateListData.java +++ b/src/main/java/com/cloudcraftgaming/discal/bot/internal/network/discordpw/UpdateDisPwData.java @@ -8,34 +8,43 @@ import com.mashape.unirest.http.JsonNode; import com.mashape.unirest.http.Unirest; import org.json.JSONObject; +import java.util.Timer; +import java.util.TimerTask; + /** * Created by Nova Fox on 1/13/2017. * Website: www.cloudcraftgaming.com * For Project: DisCal */ -public class UpdateListData { +public class UpdateDisPwData { + private static Timer timer; - /** - * Initiates the data updater with a valid token. - * - */ public static void init() { + timer = new Timer(true); + timer.schedule(new TimerTask() { + @Override + public void run() { + updateSiteBotMeta(); + } + }, 60 * 60 * 1000); } - /** - * Updates the site meta on bots.discord.pw - */ - public static void updateSiteBotMeta() { + public static void shutdown() { + timer.cancel(); + } + + private static void updateSiteBotMeta() { try { Integer serverCount = Main.client.getGuilds().size(); JSONObject json = new JSONObject().put("server_count", serverCount); + //noinspection unused HttpResponse response = Unirest.post("https://bots.discord.pw/api/bots/265523588918935552/stats").header("Authorization", BotSettings.PW_TOKEN.get()).header("Content-Type", "application/json").body(json).asJson(); } catch (Exception e) { //Handle issue. System.out.println("Failed to update Discord PW list metadata!"); - ExceptionHandler.sendException(null, "Failed to update Discord PW list.", e, UpdateListData.class); + ExceptionHandler.sendException(null, "Failed to update Discord PW list.", e, UpdateDisPwData.class); e.printStackTrace(); } } diff --git a/src/main/java/com/cloudcraftgaming/discal/bot/internal/service/ApplicationHandler.java b/src/main/java/com/cloudcraftgaming/discal/bot/internal/service/ApplicationHandler.java index 8fbedaee..1629df58 100644 --- a/src/main/java/com/cloudcraftgaming/discal/bot/internal/service/ApplicationHandler.java +++ b/src/main/java/com/cloudcraftgaming/discal/bot/internal/service/ApplicationHandler.java @@ -3,6 +3,8 @@ package com.cloudcraftgaming.discal.bot.internal.service; import com.cloudcraftgaming.discal.Main; import com.cloudcraftgaming.discal.api.database.DatabaseManager; import com.cloudcraftgaming.discal.api.utils.ExceptionHandler; +import com.cloudcraftgaming.discal.bot.internal.network.discordbots.UpdateDisBotData; +import com.cloudcraftgaming.discal.bot.internal.network.discordpw.UpdateDisPwData; import sx.blah.discord.util.DiscordException; import java.io.File; @@ -106,6 +108,8 @@ public class ApplicationHandler { //No need to print, exiting anyway. e.printStackTrace(); } + UpdateDisBotData.shutdown(); + UpdateDisPwData.shutdown(); TimeManager.getManager().shutdown(); DatabaseManager.getManager().disconnectFromMySQL(); System.exit(0); diff --git a/src/main/java/com/cloudcraftgaming/discal/bot/internal/service/TimeManager.java b/src/main/java/com/cloudcraftgaming/discal/bot/internal/service/TimeManager.java index fe8b8d77..823a6693 100644 --- a/src/main/java/com/cloudcraftgaming/discal/bot/internal/service/TimeManager.java +++ b/src/main/java/com/cloudcraftgaming/discal/bot/internal/service/TimeManager.java @@ -1,6 +1,5 @@ package com.cloudcraftgaming.discal.bot.internal.service; -import com.cloudcraftgaming.discal.bot.internal.network.discordpw.TimedUpdate; import com.cloudcraftgaming.discal.bot.module.announcement.AnnouncementTask; import com.cloudcraftgaming.discal.bot.module.misc.StatusChanger; @@ -38,7 +37,6 @@ public class TimeManager { public void init() { Timer timer = new Timer(true); timer.schedule(new StatusChanger(), 10 * 1000, 10 * 1000); - timer.schedule(new TimedUpdate(), 60 * 60 * 1000, 60 * 60 * 1000); timers.add(timer); @@ -53,7 +51,7 @@ public class TimeManager { /** * Gracefully shuts down the TimeManager and exits all timer threads preventing errors. */ - public void shutdown() { + void shutdown() { for (Timer t : timers) { t.cancel(); } diff --git a/src/main/java/com/cloudcraftgaming/discal/bot/listeners/ReadyEventListener.java b/src/main/java/com/cloudcraftgaming/discal/bot/listeners/ReadyEventListener.java index 6876fb14..e1c94fc0 100644 --- a/src/main/java/com/cloudcraftgaming/discal/bot/listeners/ReadyEventListener.java +++ b/src/main/java/com/cloudcraftgaming/discal/bot/listeners/ReadyEventListener.java @@ -1,7 +1,8 @@ package com.cloudcraftgaming.discal.bot.listeners; import com.cloudcraftgaming.discal.api.message.MessageManager; -import com.cloudcraftgaming.discal.bot.internal.network.discordpw.UpdateListData; +import com.cloudcraftgaming.discal.bot.internal.network.discordbots.UpdateDisBotData; +import com.cloudcraftgaming.discal.bot.internal.network.discordpw.UpdateDisPwData; import com.cloudcraftgaming.discal.bot.internal.service.TimeManager; import sx.blah.discord.api.events.EventSubscriber; import sx.blah.discord.handle.impl.events.ReadyEvent; @@ -16,7 +17,9 @@ public class ReadyEventListener { @EventSubscriber public void onReadyEvent(ReadyEvent event) { TimeManager.getManager().init(); - UpdateListData.updateSiteBotMeta(); + + UpdateDisBotData.init(); + UpdateDisPwData.init(); MessageManager.reloadLangs(); }