using Autofac; using Myriad.Gateway; using Myriad.Rest; using Myriad.Types; namespace PluralKit.Bot; public class InteractionContext { private readonly ILifetimeScope _services; public InteractionContext(InteractionCreateEvent evt, ILifetimeScope services) { Event = evt; _services = services; } public InteractionCreateEvent Event { get; } public ulong ChannelId => Event.ChannelId; public ulong? MessageId => Event.Message?.Id; public GuildMember? Member => Event.Member; public User User => Event.Member?.User ?? Event.User; public string Token => Event.Token; public string? CustomId => Event.Data?.CustomId; public async Task Reply(string content) { await Respond(InteractionResponse.ResponseType.ChannelMessageWithSource, new InteractionApplicationCommandCallbackData { Content = content, Flags = Message.MessageFlags.Ephemeral }); } public async Task Ignore() { await Respond(InteractionResponse.ResponseType.DeferredUpdateMessage, new InteractionApplicationCommandCallbackData { Components = Event.Message.Components }); } public async Task Acknowledge() { await Respond(InteractionResponse.ResponseType.UpdateMessage, new InteractionApplicationCommandCallbackData { Components = Array.Empty() }); } public async Task Respond(InteractionResponse.ResponseType type, InteractionApplicationCommandCallbackData? data) { var rest = _services.Resolve(); await rest.CreateInteractionResponse(Event.Id, Event.Token, new InteractionResponse { Type = type, Data = data }); } }