using JetBrains.Annotations; using Octobot.Services; using Remora.Discord.API.Abstractions.Gateway.Events; using Remora.Discord.Gateway.Responders; using Remora.Results; namespace Octobot.Responders; [UsedImplicitly] public class ScheduledEventUpdatedResponder : IResponder { private readonly GuildDataService _guildData; public ScheduledEventUpdatedResponder(GuildDataService guildData) { _guildData = guildData; } public async Task RespondAsync(IGuildScheduledEventUpdate gatewayEvent, CancellationToken ct = default) { var data = await _guildData.GetData(gatewayEvent.GuildID, ct); var eventData = data.ScheduledEvents[gatewayEvent.ID.Value]; eventData.Name = gatewayEvent.Name; eventData.ScheduledStartTime = gatewayEvent.ScheduledStartTime; eventData.ScheduleOnStatusUpdated = eventData.Status != gatewayEvent.Status; eventData.Status = gatewayEvent.Status; return Result.FromSuccess(); } }