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 && 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)