From 1ea243df744d3639e0ea1edb6eab97c2f550e926 Mon Sep 17 00:00:00 2001 From: Zach Goodson Date: Wed, 25 Feb 2026 04:39:35 -0600 Subject: [PATCH 1/2] Better Timeout Handling for Message Caching --- general-helpers/message-caching/messageCaching.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/general-helpers/message-caching/messageCaching.cs b/general-helpers/message-caching/messageCaching.cs index e252cf6..1bb85b6 100644 --- a/general-helpers/message-caching/messageCaching.cs +++ b/general-helpers/message-caching/messageCaching.cs @@ -75,11 +75,11 @@ private static async Task DownloadAndCacheAsync( IMessageChannel channel, ulong messageId) { - using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5)); + using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(15)); try { - if (await channel.GetMessageAsync(messageId, options: new RequestOptions { CancelToken = cts.Token }) is not IUserMessage msg) + if (await channel.GetMessageAsync(messageId, options: new RequestOptions { CancelToken = cts.Token, RetryMode = RetryMode.RetryRatelimit}) is not IUserMessage msg) return null; if (msg.Flags.HasValue && From 42ae3f3341a76cf8319d07e7a5ee3602344d0bad Mon Sep 17 00:00:00 2001 From: Zach Goodson Date: Wed, 25 Feb 2026 04:40:54 -0600 Subject: [PATCH 2/2] HandleReactionAdded | Refactor Order of Err Checks --- main.cs | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/main.cs b/main.cs index 2544231..905c87d 100644 --- a/main.cs +++ b/main.cs @@ -493,23 +493,6 @@ private static Task HandleReactionAddedAsync( return; } - var botUser = textChannel.GetUser(Client.CurrentUser.Id); - - if (botUser == null || !botUser.GetPermissions(textChannel).ReadMessageHistory) - { - return; - } - - var userMessage = await CachedMessages.GetOrDownloadAsync(textChannel, cacheable.Id); - if (userMessage == null) - { - return; - } - - string key = reaction.Emote is Emote emote ? emote.Id.ToString() : reaction.Emote.Name; - - userMessage.IncreaseReactionCount(key); - using var scope = Services.CreateScope(); var dbContext = scope.ServiceProvider.GetRequiredService(); var server = await dbContext.GetOrCreateServerAsync(textChannel.Guild.Id); @@ -519,6 +502,7 @@ private static Task HandleReactionAddedAsync( return; } + string key = reaction.Emote is Emote emote ? emote.Id.ToString() : reaction.Emote.Name; var storedEmojiId = ReactBoardMethods.GetEmojiIdFromString(server.ReactBoardEmoji); bool isMatchingEmoji = (storedEmojiId != null && key == storedEmojiId) @@ -529,6 +513,19 @@ private static Task HandleReactionAddedAsync( return; } + var botUser = textChannel.GetUser(Client.CurrentUser.Id); + if (botUser == null || !botUser.GetPermissions(textChannel).ReadMessageHistory) + { + return; + } + + var userMessage = await CachedMessages.GetOrDownloadAsync(textChannel, cacheable.Id); + if (userMessage == null) + { + return; + } + + userMessage.IncreaseReactionCount(key); var reactionCount = userMessage.GetReactionCount(key); if (reactionCount == 0 || reactionCount < server.ReactBoardMinimumReactions)