feat(bot): add support for Discord message context commands (#513)

This commit is contained in:
Iris System
2023-05-15 15:17:34 +00:00
committed by GitHub
parent 13c055dc0f
commit 83af1f04a7
23 changed files with 515 additions and 30 deletions

View File

@@ -90,6 +90,11 @@ public class DiscordApiClient
_client.Delete($"/channels/{channelId}/messages/{messageId}/reactions/{EncodeEmoji(emoji)}",
("DeleteAllReactionsForEmoji", channelId));
public Task<ApplicationCommand[]?> ReplaceGlobalApplicationCommands(ulong applicationId,
List<ApplicationCommandRequest> requests) =>
_client.Put<ApplicationCommand[]>($"/applications/{applicationId}/commands",
("ReplaceGlobalApplicationCommands", applicationId), requests);
public Task<ApplicationCommand> CreateGlobalApplicationCommand(ulong applicationId,
ApplicationCommandRequest request) =>
_client.Post<ApplicationCommand>($"/applications/{applicationId}/commands",

View File

@@ -4,6 +4,7 @@ namespace Myriad.Rest.Types;
public record ApplicationCommandRequest
{
public ApplicationCommand.ApplicationCommandType Type { get; init; }
public string Name { get; init; }
public string Description { get; init; }
public List<ApplicationCommandOption>? Options { get; init; }

View File

@@ -2,8 +2,16 @@ namespace Myriad.Types;
public record ApplicationCommand
{
public enum ApplicationCommandType
{
ChatInput = 1,
User = 2,
Message = 3,
}
public ulong Id { get; init; }
public ulong ApplicationId { get; init; }
public ApplicationCommandType Type { get; init; }
public string Name { get; init; }
public string Description { get; init; }
public ApplicationCommandOption[]? Options { get; init; }

View File

@@ -6,5 +6,14 @@ public record ApplicationCommandInteractionData
public string? Name { get; init; }
public ApplicationCommandInteractionDataOption[]? Options { get; init; }
public string? CustomId { get; init; }
public ulong? TargetId { get; init; }
public ComponentType? ComponentType { get; init; }
public InteractionResolvedData Resolved { get; init; }
public MessageComponent[]? Components { get; init; }
public record InteractionResolvedData
{
public Dictionary<ulong, Message>? Messages { get; init; }
public Dictionary<ulong, User>? Users { get; init; }
}
}