using Boyfriend.Data; using Boyfriend.Services; using JetBrains.Annotations; using Remora.Discord.API.Abstractions.Gateway.Events; using Remora.Discord.Gateway.Responders; using Remora.Results; namespace Boyfriend.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); memberData.Roles = gatewayEvent.Roles.ToList().ConvertAll(r => r.Value); return Result.FromSuccess(); } }