using OneOf; using Remora.Discord.API.Abstractions.Objects; using Remora.Discord.API.Abstractions.Rest; using Remora.Discord.API.Objects; using Remora.Discord.Commands.Feedback.Messages; using Remora.Discord.Commands.Feedback.Services; using Remora.Rest.Core; using Remora.Results; namespace Catalogger.Backend.Extensions; public static class DiscordRestExtensions { public static async Task UpdateMessageAsync( this IDiscordRestInteractionAPI interactionApi, IInteraction interaction, InteractionMessageCallbackData data ) => await interactionApi.CreateInteractionResponseAsync( interaction.ID, interaction.Token, new InteractionResponse( InteractionCallbackType.UpdateMessage, new Optional< OneOf< IInteractionMessageCallbackData, IInteractionAutocompleteCallbackData, IInteractionModalCallbackData > >(data) ) ); public static async Task> ReplyAsync( this IFeedbackService feedbackService, Optional content = default, IEnumerable? embeds = null, bool isEphemeral = false ) => await feedbackService.SendContextualAsync( content, embeds != null ? new Optional>(embeds.ToList()) : new Optional>(), options: new FeedbackMessageOptions( MessageFlags: isEphemeral ? MessageFlags.Ephemeral : 0, AllowedMentions: new AllowedMentions( Parse: new List(), MentionRepliedUser: true ) ) ); }