diff --git a/src/Responders/GuildMemberRolesUpdatedResponder.cs b/src/Responders/GuildMemberRolesUpdatedResponder.cs deleted file mode 100644 index b883c89..0000000 --- a/src/Responders/GuildMemberRolesUpdatedResponder.cs +++ /dev/null @@ -1,33 +0,0 @@ -using JetBrains.Annotations; -using Octobot.Data; -using Octobot.Services; -using Remora.Discord.API.Abstractions.Gateway.Events; -using Remora.Discord.Gateway.Responders; -using Remora.Results; - -namespace Octobot.Responders; - -/// -/// Handles updating when a guild member is updated. -/// -[UsedImplicitly] -public class GuildMemberUpdateResponder : IResponder -{ - private readonly GuildDataService _guildData; - - public GuildMemberUpdateResponder(GuildDataService guildData) - { - _guildData = guildData; - } - - public async Task RespondAsync(IGuildMemberUpdate gatewayEvent, CancellationToken ct = default) - { - var memberData = await _guildData.GetMemberData(gatewayEvent.GuildID, gatewayEvent.User.ID, ct); - if (memberData.MutedUntil is null) - { - memberData.Roles = gatewayEvent.Roles.ToList().ConvertAll(r => r.Value); - } - - return Result.FromSuccess(); - } -} diff --git a/src/Services/GuildDataService.cs b/src/Services/GuildDataService.cs index 5d2b1b1..95af725 100644 --- a/src/Services/GuildDataService.cs +++ b/src/Services/GuildDataService.cs @@ -110,15 +110,6 @@ public sealed class GuildDataService : IHostedService continue; } - if (data.MutedUntil is null) - { - var memberResult = await _guildApi.GetGuildMemberAsync(guildId, data.Id.ToSnowflake(), ct); - if (memberResult.IsSuccess) - { - data.Roles = memberResult.Entity.Roles.ToList().ConvertAll(r => r.Value); - } - } - memberData.Add(data.Id, data); } diff --git a/src/Services/Update/MemberUpdateService.cs b/src/Services/Update/MemberUpdateService.cs index 7cd13fe..1d2b7f6 100644 --- a/src/Services/Update/MemberUpdateService.cs +++ b/src/Services/Update/MemberUpdateService.cs @@ -89,6 +89,11 @@ public sealed partial class MemberUpdateService : BackgroundService return failedResults.AggregateErrors(); } + if (data.MutedUntil is null) + { + data.Roles = guildMember.Roles.ToList().ConvertAll(r => r.Value); + } + var autoUnmuteResult = await TryAutoUnmuteAsync(guildId, id, data, ct); failedResults.AddIfFailed(autoUnmuteResult);