From 1ad369416249c73e8ba55de5c561674bf4d5061e Mon Sep 17 00:00:00 2001 From: Electrosolt Date: Sat, 27 Aug 2022 14:26:12 -0400 Subject: [PATCH 1/3] Refactor Popular Logic (again) Modifiy the span during which popular suggestions affect the requirement, and change the maximum from 23 to a bot constant (35). --- .../suggestions/reactions/PopularHandler.java | 18 ++++++++++++------ .../suggestionsbot/util/BotConstants.java | 5 +++-- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/diamondfire/suggestionsbot/suggestions/reactions/PopularHandler.java b/src/main/java/com/diamondfire/suggestionsbot/suggestions/reactions/PopularHandler.java index 96aa4de..619e91b 100644 --- a/src/main/java/com/diamondfire/suggestionsbot/suggestions/reactions/PopularHandler.java +++ b/src/main/java/com/diamondfire/suggestionsbot/suggestions/reactions/PopularHandler.java @@ -10,15 +10,21 @@ public class PopularHandler { public static int ratio; public static void calculate() { - new SingleQueryBuilder().query("SELECT (COUNT(*) * 0.5) AS ratio FROM suggestions WHERE popular_message > 0 " + - "AND date > CURRENT_TIMESTAMP - INTERVAL 1 WEEK ORDER BY (upvotes - downvotes) LIMIT 10;") + + // The algorithm works by counting how many popular suggestions were made in the past 2 weeks, + // Then adds them to a base minimum value. The value is then clamped. + new SingleQueryBuilder().query("SELECT COUNT(*) AS recents FROM suggestions WHERE popular_message > 0 " + + "AND date > CURRENT_TIMESTAMP - INTERVAL 2 WEEK;") .onQuery((set) -> { - ratio = (int) Math.ceil(set.getInt("ratio")) + BotConstants.RATIO; - if (ratio < BotConstants.RATIO) { - ratio = BotConstants.RATIO; + ratio = BotConstants.MIN_RATIO + (int) set.getInt("recents")) ; + if (ratio < BotConstants.MIN_RATIO) { + ratio = BotConstants.MIN_RATIO; + } + if (ratio > BotConstants.MAX_RATIO) { + ratio = BotConstants.MAX_RATIO } }).execute(); BotInstance.getJda().getPresence().setActivity(Activity.watching("for " + PopularHandler.ratio + " net upvotes")); } -} +} \ No newline at end of file diff --git a/src/main/java/com/diamondfire/suggestionsbot/util/BotConstants.java b/src/main/java/com/diamondfire/suggestionsbot/util/BotConstants.java index 971cbb7..7469909 100644 --- a/src/main/java/com/diamondfire/suggestionsbot/util/BotConstants.java +++ b/src/main/java/com/diamondfire/suggestionsbot/util/BotConstants.java @@ -6,8 +6,9 @@ public interface BotConstants { String PREFIX = "?"; - // The ratio cannot go lower than this. - int RATIO = 18; + // The upvote ratio cannot go lower than MIN or higher than MAX. + int MIN_RATIO = 20; + int MAX_RATIO = 35; long UPVOTE = 612568094962876416L; long DOWNVOTE = 612568084414201856L; From 05115f7d53f326056b7093bfb793e194f251d5ed Mon Sep 17 00:00:00 2001 From: Electrosolt Date: Sat, 27 Aug 2022 18:02:18 -0400 Subject: [PATCH 2/3] Refactor Popular Logic Small change to remove ifs --- .../suggestions/reactions/PopularHandler.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/diamondfire/suggestionsbot/suggestions/reactions/PopularHandler.java b/src/main/java/com/diamondfire/suggestionsbot/suggestions/reactions/PopularHandler.java index 619e91b..0b7da1e 100644 --- a/src/main/java/com/diamondfire/suggestionsbot/suggestions/reactions/PopularHandler.java +++ b/src/main/java/com/diamondfire/suggestionsbot/suggestions/reactions/PopularHandler.java @@ -16,13 +16,8 @@ public static void calculate() { new SingleQueryBuilder().query("SELECT COUNT(*) AS recents FROM suggestions WHERE popular_message > 0 " + "AND date > CURRENT_TIMESTAMP - INTERVAL 2 WEEK;") .onQuery((set) -> { - ratio = BotConstants.MIN_RATIO + (int) set.getInt("recents")) ; - if (ratio < BotConstants.MIN_RATIO) { - ratio = BotConstants.MIN_RATIO; - } - if (ratio > BotConstants.MAX_RATIO) { - ratio = BotConstants.MAX_RATIO - } + ratio = BotConstants.MIN_RATIO + (int) set.getInt("recents")); + ratio = Math.min(BotConstants.MIN_RATIO, Math.min(ratio, BotConstants.MAX_RATIO)); }).execute(); BotInstance.getJda().getPresence().setActivity(Activity.watching("for " + PopularHandler.ratio + " net upvotes")); From 045c13b08cc1a65127dbe2777c3ae83050037004 Mon Sep 17 00:00:00 2001 From: Electrosolt Date: Sat, 27 Aug 2022 22:37:41 -0400 Subject: [PATCH 3/3] Fix Mindless Copypaste Min -> Max --- .../suggestionsbot/suggestions/reactions/PopularHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/diamondfire/suggestionsbot/suggestions/reactions/PopularHandler.java b/src/main/java/com/diamondfire/suggestionsbot/suggestions/reactions/PopularHandler.java index 0b7da1e..155a267 100644 --- a/src/main/java/com/diamondfire/suggestionsbot/suggestions/reactions/PopularHandler.java +++ b/src/main/java/com/diamondfire/suggestionsbot/suggestions/reactions/PopularHandler.java @@ -17,7 +17,7 @@ public static void calculate() { "AND date > CURRENT_TIMESTAMP - INTERVAL 2 WEEK;") .onQuery((set) -> { ratio = BotConstants.MIN_RATIO + (int) set.getInt("recents")); - ratio = Math.min(BotConstants.MIN_RATIO, Math.min(ratio, BotConstants.MAX_RATIO)); + ratio = Math.max(BotConstants.MIN_RATIO, Math.min(ratio, BotConstants.MAX_RATIO)); }).execute(); BotInstance.getJda().getPresence().setActivity(Activity.watching("for " + PopularHandler.ratio + " net upvotes"));