From c93769ec9e3e84fa2c78984b85daa419f17f52d2 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 17:48:52 -0500 Subject: [PATCH 01/58] Update bot activity message to reflect community focus --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index 36e588cd42..92b13c0f27 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -25,7 +25,7 @@ export const botConfig = { activities: [ { // Text users will see (example: "Playing /help | Titan Bot"). - name: "Made with ❤️", + name: "Welcome to Greenville Roleplay Society (GVRS).We are a premier roleplay community committed to delivering a high-quality, realistic. Our community emphasizes professionalism, structure, and immersive scenarios across all departments", // Activity type number (0 = Playing). type: 0, }, From b8650559fbb1115e83995c73f8af8bcb18b5c25e Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 17:51:59 -0500 Subject: [PATCH 02/58] Update bot activity type and change brand colors --- src/config/bot.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index 92b13c0f27..8388501d29 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -27,7 +27,7 @@ export const botConfig = { // Text users will see (example: "Playing /help | Titan Bot"). name: "Welcome to Greenville Roleplay Society (GVRS).We are a premier roleplay community committed to delivering a high-quality, realistic. Our community emphasizes professionalism, structure, and immersive scenarios across all departments", // Activity type number (0 = Playing). - type: 0, + type: 4, }, ], }, @@ -88,8 +88,8 @@ export const botConfig = { embeds: { colors: { // Main brand colors. - primary: "#336699", - secondary: "#2F3136", + primary: "#FF0000", + secondary: "#FF0000", // Standard status colors for success/error/warning/info messages. success: "#57F287", From 64aae95a2be9451c7bae2b41054cff5f171e35b3 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 18:07:39 -0500 Subject: [PATCH 03/58] Increase daily reward amount from 100 to 500 --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index 8388501d29..b4f404e2d8 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -170,7 +170,7 @@ export const botConfig = { baseBankCapacity: 100000, // Daily reward amount. - dailyAmount: 100, + dailyAmount: 500, // Work command random payout range. workMin: 10, From d604c76dbf28dfbd376187062ea1d3bfb9977fe2 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 18:16:28 -0500 Subject: [PATCH 04/58] Update bot.js --- src/config/bot.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index b4f404e2d8..97193e543b 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -112,18 +112,18 @@ export const botConfig = { // Feature-specific colors. giveaway: { - active: "#57F287", - ended: "#ED4245", + active: "FF0000", + ended: "FF0000", }, ticket: { - open: "#57F287", - claimed: "#FAA61A", - closed: "#ED4245", - pending: "#99AAB5", + open: "FF0000", + claimed: "FF0000", + closed: "FF0000", + pending: "FF0000", }, - economy: "#F1C40F", - birthday: "#E91E63", - moderation: "#9B59B6", + economy: "FF0000", + birthday: "FF0000", + moderation: "FF0000", // Ticket priority color mapping. priority: { @@ -201,10 +201,10 @@ export const botConfig = { // ========================= tickets: { // Category ID where new tickets are created (null = no forced category). - defaultCategory: null, + defaultCategory: 1474582957334204607, // Role IDs allowed to manage/support tickets. - supportRoles: [], + supportRoles: [1474582829248544779], // Priority options users/staff can assign. priorities: { @@ -242,7 +242,7 @@ export const botConfig = { archiveCategory: null, // Channel ID where ticket logs are sent. - logChannel: null, + logChannel: 1474583034853589047, }, // ========================= @@ -264,7 +264,7 @@ export const botConfig = { maximumDuration: 2592000000, // Role IDs allowed to host giveaways. - allowedRoles: [], + allowedRoles: [1474582829248544779], // Role IDs that bypass giveaway restrictions. bypassRoles: [], @@ -365,7 +365,7 @@ export const botConfig = { defaultGoodbyeMessage: "{user} has left the server. We now have {memberCount} members.", // Channel ID for welcome messages. - defaultWelcomeChannel: null, + defaultWelcomeChannel: 1474582967107190906, // Channel ID for goodbye messages. defaultGoodbyeChannel: null, }, From 7e56c64e6d30b880bead520f7d5724647a3c1ab1 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 18:17:19 -0500 Subject: [PATCH 05/58] Change warning color from yellow to red --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index 97193e543b..9429e8d5e1 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -94,7 +94,7 @@ export const botConfig = { // Standard status colors for success/error/warning/info messages. success: "#57F287", error: "#ED4245", - warning: "#FEE75C", + warning: "FF0000", info: "#3498DB", // Neutral utility colors. From 6a960f89de21529196bd743e48fb64fb272d69fb Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 18:21:08 -0500 Subject: [PATCH 06/58] Update bot configuration settings --- src/config/bot.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index 9429e8d5e1..b6470384c4 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -41,7 +41,7 @@ export const botConfig = { owners: process.env.OWNER_IDS?.split(",") || [], // Default wait time between command uses (in seconds). - defaultCooldown: 3, + defaultCooldown: 30, // If true, old commands are removed before re-registering. deleteCommands: false, @@ -242,7 +242,7 @@ export const botConfig = { archiveCategory: null, // Channel ID where ticket logs are sent. - logChannel: 1474583034853589047, + logChannel: 1474583036774584453, }, // ========================= @@ -281,7 +281,7 @@ export const botConfig = { announcementChannel: null, // Timezone used to calculate birthday dates. - timezone: "UTC", + timezone: "CST", }, // ========================= @@ -437,7 +437,7 @@ export const botConfig = { features: { // Core systems. economy: true, - leveling: true, + leveling: null, moderation: true, logging: true, welcome: true, From 726b2a98a2f9287049129865072fb22e371c8798 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 18:23:03 -0500 Subject: [PATCH 07/58] Correct leveling feature value from null to true Fix typo in leveling feature setting. --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index b6470384c4..d982e770d0 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -437,7 +437,7 @@ export const botConfig = { features: { // Core systems. economy: true, - leveling: null, + leveling: ture, moderation: true, logging: true, welcome: true, From 62f584984ccd71b3823703cca2d74795f8604ab8 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 18:30:43 -0500 Subject: [PATCH 08/58] Update bot.js --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index d982e770d0..89fbca5624 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -437,7 +437,7 @@ export const botConfig = { features: { // Core systems. economy: true, - leveling: ture, + leveling: true, moderation: true, logging: true, welcome: true, From caa54e291905fa63d735e18602d75cae15fdf8e6 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 18:44:52 -0500 Subject: [PATCH 09/58] Update bot.js --- src/config/bot.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index 89fbca5624..17e27a91f9 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -38,7 +38,8 @@ export const botConfig = { commands: { // Bot owner user IDs (comma-separated in OWNER_IDS env var). // Owners can access owner/admin-level bot commands. - owners: process.env.OWNER_IDS?.split(",") || [], + owners: process.env.OWNER_IDS?.split(",") || [], + OWNER_IDS=778315242387669004 // Default wait time between command uses (in seconds). defaultCooldown: 30, @@ -78,7 +79,7 @@ export const botConfig = { deleteApprovedAfter: 30, // Role IDs allowed to manage applications. - managerRoles: [], // Will be populated from environment or database + managerRoles: [1474748297993523363], // Will be populated from environment or database }, // ========================= From 49eaab208f8997b0fdbff675e31dc731bc7d3af0 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 18:59:07 -0500 Subject: [PATCH 10/58] Remove hardcoded OWNER_IDS from bot.js Removed hardcoded OWNER_IDS value from bot configuration. --- src/config/bot.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index 17e27a91f9..dd3a8e7b23 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -39,7 +39,6 @@ export const botConfig = { // Bot owner user IDs (comma-separated in OWNER_IDS env var). // Owners can access owner/admin-level bot commands. owners: process.env.OWNER_IDS?.split(",") || [], - OWNER_IDS=778315242387669004 // Default wait time between command uses (in seconds). defaultCooldown: 30, From 0d3cff7981bb94677098f04484032a30e4a97c95 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 19:00:50 -0500 Subject: [PATCH 11/58] Change owner IDs environment variable reference --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index dd3a8e7b23..a2bdcc708a 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -38,7 +38,7 @@ export const botConfig = { commands: { // Bot owner user IDs (comma-separated in OWNER_IDS env var). // Owners can access owner/admin-level bot commands. - owners: process.env.OWNER_IDS?.split(",") || [], + owners: process.env.778315242387669004?.split(",") || [], // Default wait time between command uses (in seconds). defaultCooldown: 30, From dec179348e26223482dd7f9407dd8ada5813988a Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 19:11:39 -0500 Subject: [PATCH 12/58] Update bot.js --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index a2bdcc708a..dd3a8e7b23 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -38,7 +38,7 @@ export const botConfig = { commands: { // Bot owner user IDs (comma-separated in OWNER_IDS env var). // Owners can access owner/admin-level bot commands. - owners: process.env.778315242387669004?.split(",") || [], + owners: process.env.OWNER_IDS?.split(",") || [], // Default wait time between command uses (in seconds). defaultCooldown: 30, From 975324db66a599eb71b22eb05ec54445df152a1b Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 20:35:36 -0500 Subject: [PATCH 13/58] Change color codes to lowercase hex values Updated color codes to use lowercase hex values for consistency. --- src/config/bot.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index dd3a8e7b23..edc95bf6d8 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -65,7 +65,7 @@ export const botConfig = { statusColors: { pending: "#FFA500", approved: "#00FF00", - denied: "#FF0000", + denied: "#ff0000", }, // How long users must wait before submitting another application (hours). @@ -88,13 +88,13 @@ export const botConfig = { embeds: { colors: { // Main brand colors. - primary: "#FF0000", - secondary: "#FF0000", + primary: "#ff0000", + secondary: "#ff0000", // Standard status colors for success/error/warning/info messages. success: "#57F287", error: "#ED4245", - warning: "FF0000", + warning: "ff0000", info: "#3498DB", // Neutral utility colors. @@ -116,14 +116,14 @@ export const botConfig = { ended: "FF0000", }, ticket: { - open: "FF0000", - claimed: "FF0000", - closed: "FF0000", - pending: "FF0000", + open: "ff0000", + claimed: "ff0000", + closed: "ff0000", + pending: "ff0000", }, - economy: "FF0000", - birthday: "FF0000", - moderation: "FF0000", + economy: "ff0000", + birthday: "ff0000", + moderation: "ff0000", // Ticket priority color mapping. priority: { From 938954f9cefcf8e830bffada592cccd6031b234a Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 20:51:34 -0500 Subject: [PATCH 14/58] Update primary and secondary embed colors to #ff0000 --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index edc95bf6d8..7df1c6b536 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -85,7 +85,7 @@ export const botConfig = { // EMBED COLORS & BRANDING // ========================= // IMPORTANT: This is the SINGLE SOURCE OF TRUTH for all bot colors - embeds: { + embeds: {ff0000 colors: { // Main brand colors. primary: "#ff0000", From f591963995ce7ba3a44d4e4680e82b3c076161a2 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 20:52:17 -0500 Subject: [PATCH 15/58] Fix syntax error in bot.js embed colors --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index 7df1c6b536..edc95bf6d8 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -85,7 +85,7 @@ export const botConfig = { // EMBED COLORS & BRANDING // ========================= // IMPORTANT: This is the SINGLE SOURCE OF TRUTH for all bot colors - embeds: {ff0000 + embeds: { colors: { // Main brand colors. primary: "#ff0000", From cee60c8f3fd7f6ac6692835fa69d239314211f4e Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 21:06:02 -0500 Subject: [PATCH 16/58] Update bot.js --- src/config/bot.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index edc95bf6d8..2c7b765c3f 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -85,8 +85,8 @@ export const botConfig = { // EMBED COLORS & BRANDING // ========================= // IMPORTANT: This is the SINGLE SOURCE OF TRUTH for all bot colors - embeds: { - colors: { + embeds: {ff0000} + colors: {ff0000} // Main brand colors. primary: "#ff0000", secondary: "#ff0000", From 44bd8216bf5d14b4e09e6d9c78113eaf03ea583b Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 21:08:25 -0500 Subject: [PATCH 17/58] Fix color format in bot configuration Updated color format to use hex notation with '#' prefix. --- src/config/bot.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index 2c7b765c3f..41e825631d 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -85,8 +85,8 @@ export const botConfig = { // EMBED COLORS & BRANDING // ========================= // IMPORTANT: This is the SINGLE SOURCE OF TRUTH for all bot colors - embeds: {ff0000} - colors: {ff0000} + embeds: {#ff0000} + colors: { // Main brand colors. primary: "#ff0000", secondary: "#ff0000", From 95ef83ccefb1d9cf3a95aefb0ff8db312bd66db8 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 21:10:50 -0500 Subject: [PATCH 18/58] Fix embeds color format in bot.js Corrected the format of the embeds color definition. --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index 41e825631d..c55da7b9b5 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -85,7 +85,7 @@ export const botConfig = { // EMBED COLORS & BRANDING // ========================= // IMPORTANT: This is the SINGLE SOURCE OF TRUTH for all bot colors - embeds: {#ff0000} + embeds: {ff000 colors: { // Main brand colors. primary: "#ff0000", From 3570ada82a73a6864bad57004d3b9f93b7cb7643 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 21:13:40 -0500 Subject: [PATCH 19/58] Correct embed color format in bot.js Fix color formatting in bot configuration. --- src/config/bot.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index c55da7b9b5..e5bb671591 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -85,8 +85,8 @@ export const botConfig = { // EMBED COLORS & BRANDING // ========================= // IMPORTANT: This is the SINGLE SOURCE OF TRUTH for all bot colors - embeds: {ff000 - colors: { + embeds: {"#ff0000", + colors: {"#ff0000", // Main brand colors. primary: "#ff0000", secondary: "#ff0000", From 17b01eab93f3551361598e68076a8dd233153681 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 21:15:58 -0500 Subject: [PATCH 20/58] Update bot.js --- src/config/bot.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index e5bb671591..edc95bf6d8 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -85,8 +85,8 @@ export const botConfig = { // EMBED COLORS & BRANDING // ========================= // IMPORTANT: This is the SINGLE SOURCE OF TRUTH for all bot colors - embeds: {"#ff0000", - colors: {"#ff0000", + embeds: { + colors: { // Main brand colors. primary: "#ff0000", secondary: "#ff0000", From 6858fdfbcac350711573efa4708d5cabb33a0279 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 21:42:25 -0500 Subject: [PATCH 21/58] Change red color hex values to lowercase --- src/config/bot.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index edc95bf6d8..616bb42a24 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -107,13 +107,13 @@ export const botConfig = { green: "#57F287", yellow: "#FEE75C", fuchsia: "#EB459E", - red: "#ED4245", + red: "#ff0000", black: "#000000", // Feature-specific colors. giveaway: { - active: "FF0000", - ended: "FF0000", + active: "ff0000", + ended: "ff0000", }, ticket: { open: "ff0000", From 62b31ef3873f85d9ff45202e8daac37d928dfa22 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 21:48:23 -0500 Subject: [PATCH 22/58] Change pending status color from orange to red --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index 616bb42a24..d87868aedf 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -63,7 +63,7 @@ export const botConfig = { // Embed colors by application status. statusColors: { - pending: "#FFA500", + pending: "#ff0000", approved: "#00FF00", denied: "#ff0000", }, From ac98693bba51fdc4ea8382e3497998b2c312c5d5 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 21:55:39 -0500 Subject: [PATCH 23/58] Change bot color codes from #ff0000 to #ff0001 Updated bot color codes to new hex values. --- src/config/bot.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index d87868aedf..8b650ff892 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -88,17 +88,17 @@ export const botConfig = { embeds: { colors: { // Main brand colors. - primary: "#ff0000", - secondary: "#ff0000", + primary: "#ff0001", + secondary: "#ff0001", // Standard status colors for success/error/warning/info messages. success: "#57F287", error: "#ED4245", - warning: "ff0000", + warning: "ff0001", info: "#3498DB", // Neutral utility colors. - light: "#FFFFFF", + light: "#ff0001", dark: "#202225", gray: "#99AAB5", @@ -107,23 +107,23 @@ export const botConfig = { green: "#57F287", yellow: "#FEE75C", fuchsia: "#EB459E", - red: "#ff0000", + red: "#ff0001", black: "#000000", // Feature-specific colors. giveaway: { - active: "ff0000", - ended: "ff0000", + active: "ff0001", + ended: "ff0001", }, ticket: { - open: "ff0000", - claimed: "ff0000", - closed: "ff0000", - pending: "ff0000", + open: "ff0001", + claimed: "ff0001", + closed: "ff0001", + pending: "ff0001", }, - economy: "ff0000", - birthday: "ff0000", - moderation: "ff0000", + economy: "ff0001", + birthday: "ff0001", + moderation: "ff0001", // Ticket priority color mapping. priority: { From 12052da0cac6284b9e30a9fc78dbe26711500429 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 23 Apr 2026 21:59:48 -0500 Subject: [PATCH 24/58] Update info color to red in bot configuration Changed the info color from blue to red. --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index 8b650ff892..d3cd6d5637 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -95,7 +95,7 @@ export const botConfig = { success: "#57F287", error: "#ED4245", warning: "ff0001", - info: "#3498DB", + info: "#ff0001", // Neutral utility colors. light: "#ff0001", From 05e3539806f532c95f290ac1b9e847acf5271372 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Fri, 24 Apr 2026 21:42:50 -0500 Subject: [PATCH 25/58] Fix typo in bot.js embed colors section --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index d3cd6d5637..4d34b40737 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -85,7 +85,7 @@ export const botConfig = { // EMBED COLORS & BRANDING // ========================= // IMPORTANT: This is the SINGLE SOURCE OF TRUTH for all bot colors - embeds: { + embeds: {d colors: { // Main brand colors. primary: "#ff0001", From cac5e5af5013882b653bff2fa946db71daf71b36 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Fri, 24 Apr 2026 21:43:48 -0500 Subject: [PATCH 26/58] Fix syntax error in bot.js embeds definition --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index 4d34b40737..d3cd6d5637 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -85,7 +85,7 @@ export const botConfig = { // EMBED COLORS & BRANDING // ========================= // IMPORTANT: This is the SINGLE SOURCE OF TRUTH for all bot colors - embeds: {d + embeds: { colors: { // Main brand colors. primary: "#ff0001", From f9ddae9c51c879fecbf9b70d2b1c52d491df3834 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Fri, 24 Apr 2026 21:45:16 -0500 Subject: [PATCH 27/58] Change bot status from 'online' to 'dnd' --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index d3cd6d5637..50162b589b 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -12,7 +12,7 @@ export const botConfig = { // - "invisible" = appears offline presence: { // Current online state shown on Discord. - status: "online", + status: "dnd", // Activity lines shown under the bot name. // `type` number mapping from Discord: From d3d71c952e49051fa42a3f4150e7d623ff5b5d89 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Fri, 24 Apr 2026 21:46:54 -0500 Subject: [PATCH 28/58] Change bot status from 'dnd' to 'online' --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index 50162b589b..d3cd6d5637 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -12,7 +12,7 @@ export const botConfig = { // - "invisible" = appears offline presence: { // Current online state shown on Discord. - status: "dnd", + status: "online", // Activity lines shown under the bot name. // `type` number mapping from Discord: From e963f0bd92a9fef5e35a407673d4c76ad9b12bce Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Mon, 4 May 2026 18:32:15 -0500 Subject: [PATCH 29/58] Change bot color codes to new green values Updated color codes for bot status and embeds to a new shade of green. --- src/config/bot.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index d3cd6d5637..7b9f1bd19a 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -63,9 +63,9 @@ export const botConfig = { // Embed colors by application status. statusColors: { - pending: "#ff0000", - approved: "#00FF00", - denied: "#ff0000", + pending: "#0b6623", + approved: "#0b6623", + denied: "#0b6623", }, // How long users must wait before submitting another application (hours). @@ -88,14 +88,14 @@ export const botConfig = { embeds: { colors: { // Main brand colors. - primary: "#ff0001", - secondary: "#ff0001", + primary: "#0b6623", + secondary: "#0b6623", // Standard status colors for success/error/warning/info messages. success: "#57F287", error: "#ED4245", warning: "ff0001", - info: "#ff0001", + info: "##0b6623", // Neutral utility colors. light: "#ff0001", @@ -104,7 +104,7 @@ export const botConfig = { // Discord-style palette shortcuts. blurple: "#5865F2", - green: "#57F287", + green: "#0b6623", yellow: "#FEE75C", fuchsia: "#EB459E", red: "#ff0001", @@ -112,14 +112,14 @@ export const botConfig = { // Feature-specific colors. giveaway: { - active: "ff0001", - ended: "ff0001", + active: "0b6623", + ended: "0b6623", }, ticket: { - open: "ff0001", - claimed: "ff0001", - closed: "ff0001", - pending: "ff0001", + open: "0b6623", + claimed: "0b6623", + closed: "0b6623", + pending: "0b6623", }, economy: "ff0001", birthday: "ff0001", From 5ec72280b0cc3695874ed705d2d96741d7ff6440 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Mon, 4 May 2026 18:52:58 -0500 Subject: [PATCH 30/58] Fix typo in info color code --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index 7b9f1bd19a..fe410bafed 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -95,7 +95,7 @@ export const botConfig = { success: "#57F287", error: "#ED4245", warning: "ff0001", - info: "##0b6623", + info: "#0b6623", // Neutral utility colors. light: "#ff0001", From 1b0e65c394be1d1415d04b4e41631c28d9bef8d5 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Sat, 9 May 2026 15:59:40 -0500 Subject: [PATCH 31/58] Modify bot welcome message and update color scheme Updated bot welcome message and changed color codes for various statuses and embeds. --- src/config/bot.js | 66 +++++++++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index fe410bafed..a0a105800c 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -25,7 +25,7 @@ export const botConfig = { activities: [ { // Text users will see (example: "Playing /help | Titan Bot"). - name: "Welcome to Greenville Roleplay Society (GVRS).We are a premier roleplay community committed to delivering a high-quality, realistic. Our community emphasizes professionalism, structure, and immersive scenarios across all departments", + name: "Welcome to Greenville Roleplay Legacy (GVRL).We are a premier roleplay community committed to delivering a high-quality, realistic. Our community emphasizes professionalism, structure, and immersive scenarios across all departments", // Activity type number (0 = Playing). type: 4, }, @@ -63,9 +63,9 @@ export const botConfig = { // Embed colors by application status. statusColors: { - pending: "#0b6623", - approved: "#0b6623", - denied: "#0b6623", + pending: "#8d021f", + approved: "#8d021f", + denied: "#8d021f", }, // How long users must wait before submitting another application (hours). @@ -88,50 +88,50 @@ export const botConfig = { embeds: { colors: { // Main brand colors. - primary: "#0b6623", - secondary: "#0b6623", + primary: "#8d021f", + secondary: "#8d021f", // Standard status colors for success/error/warning/info messages. - success: "#57F287", - error: "#ED4245", - warning: "ff0001", - info: "#0b6623", + success: "#8d021f", + error: "#8d021f", + warning: "8d021f", + info: "#8d021f", // Neutral utility colors. - light: "#ff0001", - dark: "#202225", - gray: "#99AAB5", + light: "#8d021f", + dark: "#8d021f", + gray: "#8d021f", // Discord-style palette shortcuts. - blurple: "#5865F2", - green: "#0b6623", - yellow: "#FEE75C", - fuchsia: "#EB459E", - red: "#ff0001", - black: "#000000", + blurple: "#8d021f", + green: "#8d021f", + yellow: "#8d021f", + fuchsia: "#8d021f", + red: "#8d021f", + black: "#08d021f", // Feature-specific colors. giveaway: { - active: "0b6623", - ended: "0b6623", + active: "8d021f", + ended: "8d021f", }, ticket: { - open: "0b6623", - claimed: "0b6623", - closed: "0b6623", - pending: "0b6623", + open: "8d021f", + claimed: "8d021f", + closed: "8d021f", + pending: "8d021f", }, - economy: "ff0001", - birthday: "ff0001", - moderation: "ff0001", + economy: "8d021f", + birthday: "8d021f", + moderation: "8d021f", // Ticket priority color mapping. priority: { - none: "#95A5A6", - low: "#3498db", - medium: "#2ecc71", - high: "#f1c40f", - urgent: "#e74c3c", + none: "#8d021f", + low: "#8d021f", + medium: "#8d021f", + high: "#8d021f", + urgent: "#8d021f", }, }, footer: { From 56ec059157cd7fd65f641e78dba0c69a26c78a41 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Sat, 9 May 2026 16:01:08 -0500 Subject: [PATCH 32/58] Update managerRoles ID in bot configuration --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index a0a105800c..fdeff22ecb 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -78,7 +78,7 @@ export const botConfig = { deleteApprovedAfter: 30, // Role IDs allowed to manage applications. - managerRoles: [1474748297993523363], // Will be populated from environment or database + managerRoles: [1502772079953711275], // Will be populated from environment or database }, // ========================= From fddb3aae4e360b1d38dad834f9678075b11cb732 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Sat, 9 May 2026 16:03:29 -0500 Subject: [PATCH 33/58] Update logChannel and allowedRoles IDs --- src/config/bot.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index fdeff22ecb..c1aa3f444e 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -242,7 +242,7 @@ export const botConfig = { archiveCategory: null, // Channel ID where ticket logs are sent. - logChannel: 1474583036774584453, + logChannel: 1502684126702993458, }, // ========================= @@ -264,7 +264,7 @@ export const botConfig = { maximumDuration: 2592000000, // Role IDs allowed to host giveaways. - allowedRoles: [1474582829248544779], + allowedRoles: [1502772079953711275], // Role IDs that bypass giveaway restrictions. bypassRoles: [], From 17ddabc602090e13ed1ee2cb654fef9f0f5fd6f4 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Sat, 9 May 2026 19:07:47 -0500 Subject: [PATCH 34/58] Update logChannel ID for ticket logs --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index c1aa3f444e..0edc061bef 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -242,7 +242,7 @@ export const botConfig = { archiveCategory: null, // Channel ID where ticket logs are sent. - logChannel: 1502684126702993458, + logChannel: 1502684126841409620, }, // ========================= From 01778956d4b44087d1aa3fea25f67da2f1e6260f Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Mon, 11 May 2026 20:55:34 -0500 Subject: [PATCH 35/58] Update starting balance and daily reward values Increased starting balance and daily reward amount. --- src/config/bot.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index 0edc061bef..81dcd7b08c 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -164,13 +164,13 @@ export const botConfig = { }, // Starting balance for new users. - startingBalance: 0, + startingBalance: 5000, // Maximum bank amount before upgrades (if upgrades are used). baseBankCapacity: 100000, // Daily reward amount. - dailyAmount: 500, + dailyAmount: 1000, // Work command random payout range. workMin: 10, From c7bee4f185aa4f73d93fac670ed0cc462d85d39b Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Mon, 11 May 2026 21:03:57 -0500 Subject: [PATCH 36/58] Add giveall command to distribute money to all members --- src/commands/Economy/giveall.js | 183 ++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 src/commands/Economy/giveall.js diff --git a/src/commands/Economy/giveall.js b/src/commands/Economy/giveall.js new file mode 100644 index 0000000000..3c2ea3e524 --- /dev/null +++ b/src/commands/Economy/giveall.js @@ -0,0 +1,183 @@ +import { SlashCommandBuilder, PermissionFlagsBits } from 'discord.js'; +import { createEmbed, errorEmbed, successEmbed, infoEmbed, warningEmbed } from '../../utils/embeds.js'; +import { getEconomyData, addMoney, removeMoney, setEconomyData } from '../../utils/economy.js'; +import { withErrorHandling, createError, ErrorTypes } from '../../utils/errorHandler.js'; +import { logger } from '../../utils/logger.js'; +import { InteractionHelper } from '../../utils/interactionHelper.js'; +import { MessageTemplates } from '../../utils/messageTemplates.js'; +import EconomyService from '../../services/economyService.js'; + +export default { + data: new SlashCommandBuilder() + .setName('giveall') + .setDescription('Give money to all server members (Owner/Admin only)') + .addIntegerOption(option => + option + .setName('amount') + .setDescription('Amount to give to each member') + .setRequired(true) + .setMinValue(1) + ) + .setDefaultMemberPermissions(PermissionFlagsBits.Administrator), + + execute: withErrorHandling(async (interaction, config, client) => { + const deferred = await InteractionHelper.safeDefer(interaction, true); + if (!deferred) return; + + const executorId = interaction.user.id; + const amount = interaction.options.getInteger("amount"); + const guildId = interaction.guildId; + + // Check if user is a bot owner + const ownerIds = config.commands.owners || []; + const isOwner = ownerIds.includes(executorId); + const isAdmin = interaction.memberPermissions?.has(PermissionFlagsBits.Administrator); + + if (!isOwner && !isAdmin) { + throw createError( + "Permission denied", + ErrorTypes.VALIDATION, + "Only bot owners and server administrators can use this command.", + { userId: executorId, guildId } + ); + } + + if (amount <= 0) { + throw createError( + "Invalid amount", + ErrorTypes.VALIDATION, + "Amount must be greater than zero.", + { amount } + ); + } + + logger.debug(`[ECONOMY] GiveAll command initiated`, { + executorId, + amount, + guildId + }); + + try { + // Fetch all members + const guild = interaction.guild; + if (!guild) { + throw createError( + "Guild not found", + ErrorTypes.VALIDATION, + "Could not find the server.", + { guildId } + ); + } + + await InteractionHelper.safeEditReply(interaction, { + content: `⏳ Processing giveaway to **${guild.memberCount}** members...` + }); + + // Fetch all members from the guild + const members = await guild.members.fetch({ limit: 0 }); + const memberIds = members + .filter(m => !m.user.bot) // Exclude bots + .map(m => m.user.id); + + logger.info(`[ECONOMY] Starting money distribution`, { + executorId, + memberCount: memberIds.length, + amountPerMember: amount, + guildId + }); + + let successCount = 0; + let failureCount = 0; + const errors = []; + + // Process each member in batches to avoid rate limiting + const batchSize = 10; + for (let i = 0; i < memberIds.length; i += batchSize) { + const batch = memberIds.slice(i, i + batchSize); + + await Promise.all( + batch.map(async (memberId) => { + try { + // Get member's current economy data + const memberData = await getEconomyData(client, guildId, memberId); + + if (!memberData) { + failureCount++; + return; + } + + // Add money to member's wallet + const newWallet = memberData.wallet + amount; + memberData.wallet = newWallet; + + // Update the economy data + await setEconomyData(client, guildId, memberId, memberData); + + successCount++; + } catch (err) { + failureCount++; + errors.push(`${memberId}: ${err.message}`); + logger.warn(`Failed to give money to ${memberId}`, { error: err.message }); + } + }) + ); + } + + const embed = MessageTemplates.SUCCESS.DATA_UPDATED( + "giveall", + `Successfully distributed **$${amount.toLocaleString()}** to **${successCount}** members!` + ) + .addFields( + { + name: "✅ Successful", + value: `${successCount} members`, + inline: true, + }, + { + name: "❌ Failed", + value: `${failureCount} members`, + inline: true, + }, + { + name: "💵 Amount Per Member", + value: `$${amount.toLocaleString()}`, + inline: true, + }, + { + name: "👥 Total Members Processed", + value: `${memberIds.length}`, + inline: true, + } + ) + .setFooter({ + text: `Executed by ${interaction.user.username}`, + iconURL: interaction.user.displayAvatarURL(), + }); + + if (errors.length > 0 && errors.length <= 5) { + embed.addFields({ + name: "⚠️ Error Details", + value: errors.join("\n").substring(0, 1024) + }); + } + + await InteractionHelper.safeEditReply(interaction, { embeds: [embed] }); + + logger.info(`[ECONOMY] GiveAll completed`, { + executorId, + successCount, + failureCount, + totalAmount: successCount * amount, + guildId + }); + + } catch (err) { + logger.error(`[ECONOMY] GiveAll command failed`, { + error: err.message, + executorId, + guildId + }); + throw err; + } + }, { command: 'giveall' }) +}; From f9eb429d3db1395650f687601b494a1e2852d44d Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Mon, 11 May 2026 21:06:29 -0500 Subject: [PATCH 37/58] Add giveall configuration settings to bot.js --- src/config/bot.js | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index 81dcd7b08c..e5435b8e1b 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -25,7 +25,7 @@ export const botConfig = { activities: [ { // Text users will see (example: "Playing /help | Titan Bot"). - name: "Welcome to Greenville Roleplay Legacy (GVRL).We are a premier roleplay community committed to delivering a high-quality, realistic. Our community emphasizes professionalism, structure, and immersive scenarios across all departments", + name: "Welcome to Greenville Roleplay Legacy (GVRL).We are a premier roleplay community committed to delivering a high-quality, realistic. Our community emphasizes professionalism, structure, [...] // Activity type number (0 = Playing). type: 4, }, @@ -188,6 +188,24 @@ export const botConfig = { robFailJailTime: 3600000, }, + // ========================= + // GIVEALL SETTINGS + // ========================= + giveall: { + // Batch size for processing members (helps avoid rate limiting). + batchSize: 10, + + // Role IDs allowed to use the /giveall command (if empty, only admins/owners can use). + allowedRoles: [], + + // If true, the command will process and give money even if some members fail. + continueOnError: true, + + // Maximum amount allowed per person in a single giveall. + // Set to 0 for unlimited. + maxAmountPerMember: 0, + }, + // ========================= // SHOP SETTINGS // ========================= @@ -543,7 +561,3 @@ export function getRandomColor() { } export default botConfig; - - - - From 5025036e5f0bd1684c9b92789a6328a23bd1fd01 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Mon, 11 May 2026 21:10:00 -0500 Subject: [PATCH 38/58] Fix: Correct malformed hex color codes in bot config --- src/config/bot.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index e5435b8e1b..dad38e71fe 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -94,7 +94,7 @@ export const botConfig = { // Standard status colors for success/error/warning/info messages. success: "#8d021f", error: "#8d021f", - warning: "8d021f", + warning: "#8d021f", info: "#8d021f", // Neutral utility colors. @@ -108,22 +108,22 @@ export const botConfig = { yellow: "#8d021f", fuchsia: "#8d021f", red: "#8d021f", - black: "#08d021f", + black: "#8d021f", // Feature-specific colors. giveaway: { - active: "8d021f", - ended: "8d021f", + active: "#8d021f", + ended: "#8d021f", }, ticket: { - open: "8d021f", - claimed: "8d021f", - closed: "8d021f", - pending: "8d021f", + open: "#8d021f", + claimed: "#8d021f", + closed: "#8d021f", + pending: "#8d021f", }, - economy: "8d021f", - birthday: "8d021f", - moderation: "8d021f", + economy: "#8d021f", + birthday: "#8d021f", + moderation: "#8d021f", // Ticket priority color mapping. priority: { From e4e7857d65b26a2b95b0b2b5190e39c6a972f3f2 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Mon, 11 May 2026 21:13:00 -0500 Subject: [PATCH 39/58] fix: correct and diversify hex color codes in bot config --- src/config/bot.js | 64 +++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index dad38e71fe..f1babb655c 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -63,9 +63,9 @@ export const botConfig = { // Embed colors by application status. statusColors: { - pending: "#8d021f", - approved: "#8d021f", - denied: "#8d021f", + pending: "#FFB700", + approved: "#57F287", + denied: "#ED4245", }, // How long users must wait before submitting another application (hours). @@ -88,50 +88,50 @@ export const botConfig = { embeds: { colors: { // Main brand colors. - primary: "#8d021f", - secondary: "#8d021f", + primary: "#8D021F", + secondary: "#DC143C", // Standard status colors for success/error/warning/info messages. - success: "#8d021f", - error: "#8d021f", - warning: "#8d021f", - info: "#8d021f", + success: "#57F287", + error: "#ED4245", + warning: "#FFB700", + info: "#5865F2", // Neutral utility colors. - light: "#8d021f", - dark: "#8d021f", - gray: "#8d021f", + light: "#FFFFFF", + dark: "#2C2F33", + gray: "#99AAB5", // Discord-style palette shortcuts. - blurple: "#8d021f", - green: "#8d021f", - yellow: "#8d021f", - fuchsia: "#8d021f", - red: "#8d021f", - black: "#8d021f", + blurple: "#5865F2", + green: "#57F287", + yellow: "#FEE75C", + fuchsia: "#EB459E", + red: "#ED4245", + black: "#000000", // Feature-specific colors. giveaway: { - active: "#8d021f", - ended: "#8d021f", + active: "#57F287", + ended: "#ED4245", }, ticket: { - open: "#8d021f", - claimed: "#8d021f", - closed: "#8d021f", - pending: "#8d021f", + open: "#5865F2", + claimed: "#FFB700", + closed: "#ED4245", + pending: "#FEE75C", }, - economy: "#8d021f", - birthday: "#8d021f", - moderation: "#8d021f", + economy: "#FFB700", + birthday: "#EB459E", + moderation: "#ED4245", // Ticket priority color mapping. priority: { - none: "#8d021f", - low: "#8d021f", - medium: "#8d021f", - high: "#8d021f", - urgent: "#8d021f", + none: "#99AAB5", + low: "#57F287", + medium: "#FFB700", + high: "#ED4245", + urgent: "#EB459E", }, }, footer: { From e6640fbc049b98fc84dbab2778903cfca6574138 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Mon, 11 May 2026 21:18:17 -0500 Subject: [PATCH 40/58] Fix color hex codes in bot.js Removed hash symbols from color hex codes in bot.js. --- src/config/bot.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index f1babb655c..f2b07e950c 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -94,7 +94,7 @@ export const botConfig = { // Standard status colors for success/error/warning/info messages. success: "#57F287", error: "#ED4245", - warning: "#FFB700", + warning: "FFB700", info: "#5865F2", // Neutral utility colors. @@ -108,22 +108,22 @@ export const botConfig = { yellow: "#FEE75C", fuchsia: "#EB459E", red: "#ED4245", - black: "#000000", + black: "000000", // Feature-specific colors. giveaway: { - active: "#57F287", - ended: "#ED4245", + active: "57F287", + ended: "ED4245", }, ticket: { - open: "#5865F2", - claimed: "#FFB700", - closed: "#ED4245", - pending: "#FEE75C", + open: "5865F2", + claimed: "FFB700", + closed: "#D4245", + pending: "FEE75C", }, - economy: "#FFB700", - birthday: "#EB459E", - moderation: "#ED4245", + economy: "FFB700", + birthday: "EB459E", + moderation: "ED4245", // Ticket priority color mapping. priority: { From b8fc9942a208306ab76c3ef89d4748202f69f0df Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Mon, 11 May 2026 21:21:41 -0500 Subject: [PATCH 41/58] Fix config syntax errors and color codes --- src/config/bot.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/config/bot.js b/src/config/bot.js index f2b07e950c..daa50ee7e1 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -25,7 +25,7 @@ export const botConfig = { activities: [ { // Text users will see (example: "Playing /help | Titan Bot"). - name: "Welcome to Greenville Roleplay Legacy (GVRL).We are a premier roleplay community committed to delivering a high-quality, realistic. Our community emphasizes professionalism, structure, [...] + name: "Welcome to Greenville Roleplay Legacy (GVRL). We are a premier roleplay community committed to delivering a high-quality, realistic experience. Our community emphasizes professionalism, structure, and immersion.", // Activity type number (0 = Playing). type: 4, }, @@ -94,7 +94,7 @@ export const botConfig = { // Standard status colors for success/error/warning/info messages. success: "#57F287", error: "#ED4245", - warning: "FFB700", + warning: "#FFB700", info: "#5865F2", // Neutral utility colors. @@ -108,22 +108,22 @@ export const botConfig = { yellow: "#FEE75C", fuchsia: "#EB459E", red: "#ED4245", - black: "000000", + black: "#000000", // Feature-specific colors. giveaway: { - active: "57F287", - ended: "ED4245", + active: "#57F287", + ended: "#ED4245", }, ticket: { - open: "5865F2", - claimed: "FFB700", - closed: "#D4245", - pending: "FEE75C", + open: "#5865F2", + claimed: "#FFB700", + closed: "#ED4245", + pending: "#FEE75C", }, - economy: "FFB700", - birthday: "EB459E", - moderation: "ED4245", + economy: "#FFB700", + birthday: "#EB459E", + moderation: "#ED4245", // Ticket priority color mapping. priority: { @@ -364,10 +364,10 @@ export const botConfig = { maxAuditMetadataBytes: 4096, // Maximum number of audit entries kept in memory. maxInMemoryAuditEntries: 1000, - // If true, log every verification action. - logAllVerifications: true, - // If true, preserve verification audit history. - keepAuditTrail: true, + // If true, log every verification action. + logAllVerifications: true, + // If true, preserve verification audit history. + keepAuditTrail: true, }, // ========================= From 76816f71e3651562b6826abda1fc063af7f004d0 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Mon, 11 May 2026 21:28:13 -0500 Subject: [PATCH 42/58] Set default owner ID in giveall command --- src/commands/Economy/giveall.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/Economy/giveall.js b/src/commands/Economy/giveall.js index 3c2ea3e524..c1a9c9782c 100644 --- a/src/commands/Economy/giveall.js +++ b/src/commands/Economy/giveall.js @@ -29,7 +29,7 @@ export default { const guildId = interaction.guildId; // Check if user is a bot owner - const ownerIds = config.commands.owners || []; + const ownerIds = config.commands.owners || [1022692130512191518]; const isOwner = ownerIds.includes(executorId); const isAdmin = interaction.memberPermissions?.has(PermissionFlagsBits.Administrator); From ddbd9fb57bff1504de56f5078c0fdbcc80c22f32 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Mon, 11 May 2026 21:32:31 -0500 Subject: [PATCH 43/58] Increase member fetch limit to 100000 --- src/commands/Economy/giveall.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/Economy/giveall.js b/src/commands/Economy/giveall.js index c1a9c9782c..61b94b9f0e 100644 --- a/src/commands/Economy/giveall.js +++ b/src/commands/Economy/giveall.js @@ -74,7 +74,7 @@ export default { }); // Fetch all members from the guild - const members = await guild.members.fetch({ limit: 0 }); + const members = await guild.members.fetch({ limit: 100000 }); const memberIds = members .filter(m => !m.user.bot) // Exclude bots .map(m => m.user.id); From 0710579ec4dfbaf33fb8555b4eb089b6ecc32c39 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Mon, 11 May 2026 21:34:13 -0500 Subject: [PATCH 44/58] Change member fetch limit to unlimited --- src/commands/Economy/giveall.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/Economy/giveall.js b/src/commands/Economy/giveall.js index 61b94b9f0e..c1a9c9782c 100644 --- a/src/commands/Economy/giveall.js +++ b/src/commands/Economy/giveall.js @@ -74,7 +74,7 @@ export default { }); // Fetch all members from the guild - const members = await guild.members.fetch({ limit: 100000 }); + const members = await guild.members.fetch({ limit: 0 }); const memberIds = members .filter(m => !m.user.bot) // Exclude bots .map(m => m.user.id); From bc4573c4522c7a691cd51b2a3f74679a588ed947 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Mon, 11 May 2026 21:34:34 -0500 Subject: [PATCH 45/58] Update giveall.js --- src/commands/Economy/giveall.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/Economy/giveall.js b/src/commands/Economy/giveall.js index c1a9c9782c..de622b71dd 100644 --- a/src/commands/Economy/giveall.js +++ b/src/commands/Economy/giveall.js @@ -30,7 +30,7 @@ export default { // Check if user is a bot owner const ownerIds = config.commands.owners || [1022692130512191518]; - const isOwner = ownerIds.includes(executorId); + const isOwner = ownerIds.includes(1022692130512191518); const isAdmin = interaction.memberPermissions?.has(PermissionFlagsBits.Administrator); if (!isOwner && !isAdmin) { From ad3edeb51aa1d8b437e08fc4f96073e2701418b7 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Wed, 13 May 2026 08:44:54 -0500 Subject: [PATCH 46/58] Update giveall.js --- src/commands/Economy/giveall.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/Economy/giveall.js b/src/commands/Economy/giveall.js index de622b71dd..e6e6e38a1d 100644 --- a/src/commands/Economy/giveall.js +++ b/src/commands/Economy/giveall.js @@ -16,7 +16,7 @@ export default { .setName('amount') .setDescription('Amount to give to each member') .setRequired(true) - .setMinValue(1) + .setMinValue(0) ) .setDefaultMemberPermissions(PermissionFlagsBits.Administrator), From ce76cd1b5cc64c3198e2b58c7764ccb3d2bdb244 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Wed, 13 May 2026 08:50:05 -0500 Subject: [PATCH 47/58] Update giveall.js --- src/commands/Economy/giveall.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/Economy/giveall.js b/src/commands/Economy/giveall.js index e6e6e38a1d..32f6e053aa 100644 --- a/src/commands/Economy/giveall.js +++ b/src/commands/Economy/giveall.js @@ -30,7 +30,7 @@ export default { // Check if user is a bot owner const ownerIds = config.commands.owners || [1022692130512191518]; - const isOwner = ownerIds.includes(1022692130512191518); + const isOwner = ownerIds.includes(interaction.user.id); const isAdmin = interaction.memberPermissions?.has(PermissionFlagsBits.Administrator); if (!isOwner && !isAdmin) { From 5ba93b0fa8facb21573f1f3e593ca80d5ad75490 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Wed, 13 May 2026 08:57:37 -0500 Subject: [PATCH 48/58] Update bot.js --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index daa50ee7e1..3e41aa2781 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -196,7 +196,7 @@ export const botConfig = { batchSize: 10, // Role IDs allowed to use the /giveall command (if empty, only admins/owners can use). - allowedRoles: [], + allowedRoles: [1502786282793861180], // If true, the command will process and give money even if some members fail. continueOnError: true, From fc59d79991303d677c4b87c4e7a055cc481257a1 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Wed, 13 May 2026 08:59:49 -0500 Subject: [PATCH 49/58] Update bot.js --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index 3e41aa2781..7e437ce1a9 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -170,7 +170,7 @@ export const botConfig = { baseBankCapacity: 100000, // Daily reward amount. - dailyAmount: 1000, + dailyAmount: 1000000000000000, // Work command random payout range. workMin: 10, From fd4d702a8916be90c56a024aeb02ab00096ddba6 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Wed, 13 May 2026 09:03:21 -0500 Subject: [PATCH 50/58] Update bot.js --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index 7e437ce1a9..3e41aa2781 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -170,7 +170,7 @@ export const botConfig = { baseBankCapacity: 100000, // Daily reward amount. - dailyAmount: 1000000000000000, + dailyAmount: 1000, // Work command random payout range. workMin: 10, From cc6f597cb150c89572526ff50cc44b2b6b69abe2 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Wed, 13 May 2026 09:04:33 -0500 Subject: [PATCH 51/58] Update mine.js --- src/commands/Economy/mine.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/Economy/mine.js b/src/commands/Economy/mine.js index f8dd54cba9..bf3e39297e 100644 --- a/src/commands/Economy/mine.js +++ b/src/commands/Economy/mine.js @@ -6,8 +6,8 @@ import { MessageTemplates } from '../../utils/messageTemplates.js'; import { InteractionHelper } from '../../utils/interactionHelper.js'; const MINE_COOLDOWN = 60 * 60 * 1000; -const BASE_MIN_REWARD = 400; -const BASE_MAX_REWARD = 1200; +const BASE_MIN_REWARD = 80000; +const BASE_MAX_REWARD = 80000; const PICKAXE_MULTIPLIER = 1.2; const DIAMOND_PICKAXE_MULTIPLIER = 2.0; From a24ae13128c1263df3ca558f0036705d1668ee62 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Wed, 13 May 2026 09:06:31 -0500 Subject: [PATCH 52/58] Update mine.js --- src/commands/Economy/mine.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/Economy/mine.js b/src/commands/Economy/mine.js index bf3e39297e..f8dd54cba9 100644 --- a/src/commands/Economy/mine.js +++ b/src/commands/Economy/mine.js @@ -6,8 +6,8 @@ import { MessageTemplates } from '../../utils/messageTemplates.js'; import { InteractionHelper } from '../../utils/interactionHelper.js'; const MINE_COOLDOWN = 60 * 60 * 1000; -const BASE_MIN_REWARD = 80000; -const BASE_MAX_REWARD = 80000; +const BASE_MIN_REWARD = 400; +const BASE_MAX_REWARD = 1200; const PICKAXE_MULTIPLIER = 1.2; const DIAMOND_PICKAXE_MULTIPLIER = 2.0; From 6adef2d4c83946a3f4a80da5bba9401e0685ebce Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Wed, 13 May 2026 09:36:48 -0500 Subject: [PATCH 53/58] Update bot.js --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index 3e41aa2781..8a8705c1d2 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -167,7 +167,7 @@ export const botConfig = { startingBalance: 5000, // Maximum bank amount before upgrades (if upgrades are used). - baseBankCapacity: 100000, + baseBankCapacity: 200000, // Daily reward amount. dailyAmount: 1000, From 31cad987c4bd4cf4979b157551ef234d99d25694 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Wed, 13 May 2026 19:44:25 -0500 Subject: [PATCH 54/58] Update bot.js --- src/config/bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/bot.js b/src/config/bot.js index 8a8705c1d2..154620c70e 100644 --- a/src/config/bot.js +++ b/src/config/bot.js @@ -167,7 +167,7 @@ export const botConfig = { startingBalance: 5000, // Maximum bank amount before upgrades (if upgrades are used). - baseBankCapacity: 200000, + baseBankCapacity: 900000, // Daily reward amount. dailyAmount: 1000, From e125e38b31000cfb4c30e90773c14b959c9b697e Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Wed, 13 May 2026 19:45:06 -0500 Subject: [PATCH 55/58] Update mine.js --- src/commands/Economy/mine.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/Economy/mine.js b/src/commands/Economy/mine.js index f8dd54cba9..003632c930 100644 --- a/src/commands/Economy/mine.js +++ b/src/commands/Economy/mine.js @@ -6,8 +6,8 @@ import { MessageTemplates } from '../../utils/messageTemplates.js'; import { InteractionHelper } from '../../utils/interactionHelper.js'; const MINE_COOLDOWN = 60 * 60 * 1000; -const BASE_MIN_REWARD = 400; -const BASE_MAX_REWARD = 1200; +const BASE_MIN_REWARD = 900000; +const BASE_MAX_REWARD = 900000; const PICKAXE_MULTIPLIER = 1.2; const DIAMOND_PICKAXE_MULTIPLIER = 2.0; From 2a63d307f0ed9de953d3ecb16b369bf046327433 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Wed, 13 May 2026 19:46:16 -0500 Subject: [PATCH 56/58] Update mine.js --- src/commands/Economy/mine.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/Economy/mine.js b/src/commands/Economy/mine.js index 003632c930..f8dd54cba9 100644 --- a/src/commands/Economy/mine.js +++ b/src/commands/Economy/mine.js @@ -6,8 +6,8 @@ import { MessageTemplates } from '../../utils/messageTemplates.js'; import { InteractionHelper } from '../../utils/interactionHelper.js'; const MINE_COOLDOWN = 60 * 60 * 1000; -const BASE_MIN_REWARD = 900000; -const BASE_MAX_REWARD = 900000; +const BASE_MIN_REWARD = 400; +const BASE_MAX_REWARD = 1200; const PICKAXE_MULTIPLIER = 1.2; const DIAMOND_PICKAXE_MULTIPLIER = 2.0; From b62296d6168da3c7e53dcf7dbb6cf45e03dae066 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 30 Jul 2026 00:59:46 -0500 Subject: [PATCH 57/58] feat(session): add /startup command and session reaction handler --- src/commands/Session/startup.js | 101 ++++++++++++++++++++++++ src/handlers/events/sessionReactions.js | 95 ++++++++++++++++++++++ 2 files changed, 196 insertions(+) create mode 100644 src/commands/Session/startup.js create mode 100644 src/handlers/events/sessionReactions.js diff --git a/src/commands/Session/startup.js b/src/commands/Session/startup.js new file mode 100644 index 0000000000..f8cce8d137 --- /dev/null +++ b/src/commands/Session/startup.js @@ -0,0 +1,101 @@ +import { SlashCommandBuilder } from 'discord.js'; +import { createEmbed } from '../../utils/embeds.js'; + +/** + * /startup required_reactions: int + * Checks staff role from guild config, enforces allowed channels from guild config, + * posts the startup embed, pings everyone and stores session state/pending sessions on the client. + */ +export default { + slashOnly: true, + data: new SlashCommandBuilder() + .setName('startup') + .setDescription('Start a roleplay session') + .addIntegerOption((opt) => + opt + .setName('required_reactions') + .setDescription('Number of reactions needed to start the session') + .setRequired(true) + .setMinValue(1), + ), + + category: 'Session', + + async execute(interaction, guildConfig = {}, client) { + const required = interaction.options.getInteger('required_reactions'); + + // Resolve staff role ID from guild config: config.roles.staff_team + const staffRoleId = String(guildConfig?.roles?.staff_team || ''); + const memberRoles = interaction.member?.roles?.cache; + + if (!staffRoleId || !(memberRoles && memberRoles.has && memberRoles.has(staffRoleId))) { + await interaction.reply({ content: 'Only staff team members can use this command.', ephemeral: true }); + return; + } + + // Enforce allowed channels from guild config: channels.session_commands_channel_id / _2 + const channels = guildConfig?.channels || {}; + const allowed1 = String(channels.session_commands_channel_id || ''); + const allowed2 = String(channels.session_commands_channel_id_2 || ''); + + if (![String(interaction.channelId), String(allowed1), String(allowed2)].includes(String(interaction.channelId))) { + await interaction.reply({ + content: `This command can only be used in <#${allowed1}> or <#${allowed2}>.`, + ephemeral: true, + }); + return; + } + + // Build embed from guild embed config (keys: embeds.startup) + const ecfg = (guildConfig?.embeds && guildConfig.embeds.startup) || {}; + const title = ecfg.title || '_Greenville Roleplay Legacy_ - ___Session Startup___'; + // replace placeholders {user} and {required} if present + let description = ecfg.description || ''; + description = description.replace(/\{user\}/g, interaction.user?.toString() || '') + .replace(/\{required\}/g, String(required)); + const embed = createEmbed({ + title, + description, + color: 'success', + }); + if (ecfg.image_url) embed.setImage(ecfg.image_url); + embed.setFooter({ text: guildConfig?.bot?.footer_text || '', iconURL: guildConfig?.bot?.footer_icon || '' }); + + // Reply to invoker, then post the announcement (ping everyone) + await interaction.reply({ content: 'Startup initiated.', ephemeral: true }); + + const channel = interaction.channel; + const announcement = await channel.send({ + content: '@everyone', + embeds: [embed], + allowedMentions: { parse: ['everyone'] }, + }); + + // Add reaction (custom emoji string works: <:name:id>) + const targetEmoji = '<:pinkcheckmark:1502780778449342494>'; // same emoji used in your python + try { + await announcement.react(targetEmoji); + } catch (err) { + // Reaction might fail if emoji not available; ignore silently + // If you have a logger, you can log this error + } + + // Ensure client-side stores exist + if (!client.sessionStates) client.sessionStates = new Map(); + if (!client.pendingSessions) client.pendingSessions = new Map(); + + // Save session state and pending session entry + client.sessionStates.set(String(channel.id), { + messageId: announcement.id, + time: Math.floor(Date.now() / 1000), + completed: true, + reactors: new Set(), + }); + + client.pendingSessions.set(String(announcement.id), { + type: 'startup', + required, + user: interaction.user?.toString() || interaction.user?.tag || 'unknown', + }); + }, +}; diff --git a/src/handlers/events/sessionReactions.js b/src/handlers/events/sessionReactions.js new file mode 100644 index 0000000000..3497119379 --- /dev/null +++ b/src/handlers/events/sessionReactions.js @@ -0,0 +1,95 @@ +/** + * registerSessionReactions(client) + * - Listens for messageReactionAdd and messageReactionRemove + * - When required non-bot reactions on a pending startup announcement are reached, + * posts the setup embed and clears pendingSessions entry. + * + * Put this file at: src/handlers/events/sessionReactions.js + * and call registerSessionReactions(client) after your client is created and client.config is loaded. + */ + +export function registerSessionReactions(client) { + const targetEmojiStr = '<:pinkcheckmark:1502780778449342494>'; + + client.on('messageReactionAdd', async (reaction, user) => { + if (!client.pendingSessions) return; + if (user?.bot) return; + + try { + if (reaction.partial) await reaction.fetch(); + } catch { + return; + } + + const messageId = String(reaction.message?.id); + if (!client.pendingSessions.has(messageId)) return; + + const data = client.pendingSessions.get(messageId); + if (!data || data.type !== 'startup') return; + + // Only handle target emoji + if (String(reaction.emoji?.toString?.()) !== targetEmojiStr) return; + + // Fetch users for the reaction and filter bots + let users; + try { + users = await reaction.users.fetch(); + } catch { + users = new Map(); + } + const humanCount = Array.from(users.values()).filter((u) => !u.bot).length; + + // If we haven't reached required reactions yet, update sessionStates and bail + if (humanCount < Number(data.required)) { + if (client.sessionStates) { + for (const [, state] of client.sessionStates) { + if (String(state.messageId) === messageId) { + if (!state.reactors) state.reactors = new Set(); + state.reactors.add(user.id); + break; + } + } + } + return; + } + + // Enough reactions reached — post the setup embed and clean up pendingSessions + const channel = reaction.message.channel || (await client.channels.fetch(reaction.message.channelId).catch(() => null)); + if (!channel) return; + + const ecfg = (client.config && client.config.embeds && client.config.embeds.setup) || {}; + const embed = { + title: ecfg.title || '_Greenville Roleplay Legacy_ - ___Roleplay Preparation:___', + description: (ecfg.description || '').replace(/\{user\}/g, data.user), + color: 0xadcf8b, + }; + if (ecfg.image_url) embed.image = { url: ecfg.image_url }; + if (client.config?.bot?.footer_text || client.config?.bot?.footer_icon) { + embed.footer = { + text: client.config.bot.footer_text || '', + icon_url: client.config.bot.footer_icon || '', + }; + } + + await channel.send({ embeds: [embed] }).catch(() => null); + client.pendingSessions.delete(messageId); + }); + + client.on('messageReactionRemove', async (reaction, user) => { + if (!client.sessionStates) return; + if (!reaction) return; + + try { + if (reaction.partial) await reaction.fetch(); + } catch { + return; + } + + for (const [, state] of client.sessionStates) { + if (String(state.messageId) === String(reaction.message?.id) && String(reaction.emoji?.toString?.()) === targetEmojiStr) { + if (state.reactors && state.reactors.delete) state.reactors.delete(user?.id); + break; + } + } + }); +} From 09e897a09552fbc2e8bdea6ea67ed7d961f32504 Mon Sep 17 00:00:00 2001 From: maxsasukeuchiha271-create Date: Thu, 30 Jul 2026 01:03:08 -0500 Subject: [PATCH 58/58] chore(register): wire session reaction handler into startup --- src/app.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/app.js b/src/app.js index c0625b6b5a..775e661944 100644 --- a/src/app.js +++ b/src/app.js @@ -12,6 +12,7 @@ import { logger, startupLog, shutdownLog } from './utils/logger.js'; import { checkBirthdays } from './services/birthdayService.js'; import { checkGiveaways } from './services/giveawayService.js'; import { loadCommands, registerCommands as registerSlashCommands } from './handlers/commandLoader.js'; +import { registerSessionReactions } from './handlers/events/sessionReactions.js'; class TitanBot extends Client { constructor() { @@ -79,6 +80,14 @@ class TitanBot extends Client { startupLog('Loading handlers...'); await this.loadHandlers(); startupLog('Handlers loaded'); + + // Register session reaction listeners (if available) + try { + registerSessionReactions(this); + startupLog('Session reaction handler registered'); + } catch (err) { + logger.warn('Failed to register session reaction handler:', err && err.message ? err.message : err); + } startupLog('Logging into Discord...'); await this.login(this.config.bot.token); @@ -347,7 +356,7 @@ class TitanBot extends Client { logger.info('✅ Graceful shutdown complete'); shutdownLog('Bot stopped successfully.'); - process.exit(0); + process.exit(0); } catch (error) { logger.error('Error during graceful shutdown:', error); process.exit(1); @@ -381,6 +390,3 @@ try { } export default TitanBot; - - -