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 _dataService; public GuildMemberUpdateResponder(GuildDataService dataService) { _dataService = dataService; } public async Task RespondAsync(IGuildMemberUpdate gatewayEvent, CancellationToken ct = default) { var memberData = await _dataService.GetMemberData(gatewayEvent.GuildID, gatewayEvent.User.ID, ct); memberData.Roles = gatewayEvent.Roles.ToList().ConvertAll(r => r.Value); return Result.FromSuccess(); } }