From 8afea2c09d2d8f62f1c79dd268e144d1f08afbe2 Mon Sep 17 00:00:00 2001 From: Mihail Gribkov <61027276+Misha-133@users.noreply.github.com> Date: Sat, 29 Jun 2024 20:21:15 +0300 Subject: [PATCH] Update for the breaking change discord has made + v3 is cringe (#2951) * update for the breaking change discord made + v3 is fucked * this could've bee a cool surprise 4 everyone --- .../ApplicationCommandInteractionMetadata.cs | 6 +++++- .../IMessageInteractionData.cs | 5 +++++ .../MessageComponentInteractionMetadata.cs | 6 +++++- .../ModalInteractionMetadata.cs | 6 +++++- .../API/Common/MessageInteractionMetadata.cs | 6 +++--- .../Entities/Messages/RestMessage.cs | 1 + .../Entities/Messages/RestUserMessage.cs | 2 +- .../Extensions/InteractionMetadataExtensions.cs | 17 ++++++++++------- .../Entities/Messages/SocketUserMessage.cs | 2 +- 9 files changed, 36 insertions(+), 15 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/ApplicationCommandInteractionMetadata.cs b/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/ApplicationCommandInteractionMetadata.cs index 11e5d480..30b55b48 100644 --- a/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/ApplicationCommandInteractionMetadata.cs +++ b/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/ApplicationCommandInteractionMetadata.cs @@ -20,6 +20,9 @@ public readonly struct ApplicationCommandInteractionMetadata : IMessageInteracti /// public ulong UserId { get; } + /// + public IUser User { get; } + /// public IReadOnlyDictionary IntegrationOwners { get; } @@ -32,7 +35,7 @@ public readonly struct ApplicationCommandInteractionMetadata : IMessageInteracti public string Name { get; } internal ApplicationCommandInteractionMetadata(ulong id, InteractionType type, ulong userId, IReadOnlyDictionary integrationOwners, - ulong? originalResponseMessageId, string name) + ulong? originalResponseMessageId, string name, IUser user) { Id = id; Type = type; @@ -40,5 +43,6 @@ public readonly struct ApplicationCommandInteractionMetadata : IMessageInteracti IntegrationOwners = integrationOwners; OriginalResponseMessageId = originalResponseMessageId; Name = name; + User = user; } } diff --git a/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/IMessageInteractionData.cs b/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/IMessageInteractionData.cs index 61c3231b..7661c519 100644 --- a/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/IMessageInteractionData.cs +++ b/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/IMessageInteractionData.cs @@ -17,6 +17,11 @@ public interface IMessageInteractionMetadata : ISnowflakeEntity /// ulong UserId { get; } + /// + /// Gets the user who triggered the interaction. + /// + IUser User { get; } + /// /// Gets the Ids for installation contexts related to the interaction. /// diff --git a/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/MessageComponentInteractionMetadata.cs b/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/MessageComponentInteractionMetadata.cs index f9f4455f..f04e4ddc 100644 --- a/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/MessageComponentInteractionMetadata.cs +++ b/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/MessageComponentInteractionMetadata.cs @@ -20,6 +20,9 @@ public readonly struct MessageComponentInteractionMetadata : IMessageInteraction /// public ulong UserId { get; } + /// + public IUser User { get; } + /// public IReadOnlyDictionary IntegrationOwners { get; } @@ -32,7 +35,7 @@ public readonly struct MessageComponentInteractionMetadata : IMessageInteraction public ulong InteractedMessageId { get; } internal MessageComponentInteractionMetadata(ulong id, InteractionType type, ulong userId, IReadOnlyDictionary integrationOwners, - ulong? originalResponseMessageId, ulong interactedMessageId) + ulong? originalResponseMessageId, ulong interactedMessageId, IUser user) { Id = id; Type = type; @@ -40,6 +43,7 @@ public readonly struct MessageComponentInteractionMetadata : IMessageInteraction IntegrationOwners = integrationOwners; OriginalResponseMessageId = originalResponseMessageId; InteractedMessageId = interactedMessageId; + User = user; } } diff --git a/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/ModalInteractionMetadata.cs b/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/ModalInteractionMetadata.cs index 12306e6f..792f89cd 100644 --- a/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/ModalInteractionMetadata.cs +++ b/src/Discord.Net.Core/Entities/Interactions/MessageInteractionData/ModalInteractionMetadata.cs @@ -20,6 +20,9 @@ public readonly struct ModalSubmitInteractionMetadata :IMessageInteractionMetada /// public ulong UserId { get; } + /// + public IUser User { get; } + /// public IReadOnlyDictionary IntegrationOwners { get; } @@ -32,7 +35,7 @@ public readonly struct ModalSubmitInteractionMetadata :IMessageInteractionMetada public IMessageInteractionMetadata TriggeringInteractionMetadata { get; } internal ModalSubmitInteractionMetadata(ulong id, InteractionType type, ulong userId, IReadOnlyDictionary integrationOwners, - ulong? originalResponseMessageId, IMessageInteractionMetadata triggeringInteractionMetadata) + ulong? originalResponseMessageId, IMessageInteractionMetadata triggeringInteractionMetadata, IUser user) { Id = id; Type = type; @@ -40,5 +43,6 @@ public readonly struct ModalSubmitInteractionMetadata :IMessageInteractionMetada IntegrationOwners = integrationOwners; OriginalResponseMessageId = originalResponseMessageId; TriggeringInteractionMetadata = triggeringInteractionMetadata; + User = user; } } diff --git a/src/Discord.Net.Rest/API/Common/MessageInteractionMetadata.cs b/src/Discord.Net.Rest/API/Common/MessageInteractionMetadata.cs index f5f88665..8d35243b 100644 --- a/src/Discord.Net.Rest/API/Common/MessageInteractionMetadata.cs +++ b/src/Discord.Net.Rest/API/Common/MessageInteractionMetadata.cs @@ -10,9 +10,9 @@ internal class MessageInteractionMetadata [JsonProperty("type")] public InteractionType Type { get; set; } - - [JsonProperty("user_id")] - public ulong UserId { get; set; } + + [JsonProperty("user")] + public User User { get; set; } [JsonProperty("authorizing_integration_owners")] public Dictionary IntegrationOwners { get; set; } diff --git a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs index fb1840ff..a081336c 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs @@ -118,6 +118,7 @@ namespace Discord.Rest if (model.Type == MessageType.Default || model.Type == MessageType.Reply || model.Type == MessageType.ApplicationCommand || + model.Type == MessageType.ContextMenuCommand || model.Type == MessageType.ThreadStarterMessage) return RestUserMessage.Create(discord, channel, author, model); else diff --git a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs index 4144e2c3..985798a5 100644 --- a/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs +++ b/src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs @@ -169,7 +169,7 @@ namespace Discord.Rest ResolvedData = new MessageResolvedData(users, members, roles, channels); } if (model.InteractionMetadata.IsSpecified) - InteractionMetadata = model.InteractionMetadata.Value.ToInteractionMetadata(); + InteractionMetadata = model.InteractionMetadata.Value.ToInteractionMetadata(Discord); if (model.Poll.IsSpecified) Poll = model.Poll.Value.ToEntity(); diff --git a/src/Discord.Net.Rest/Extensions/InteractionMetadataExtensions.cs b/src/Discord.Net.Rest/Extensions/InteractionMetadataExtensions.cs index 547bd3f9..a16d9f5f 100644 --- a/src/Discord.Net.Rest/Extensions/InteractionMetadataExtensions.cs +++ b/src/Discord.Net.Rest/Extensions/InteractionMetadataExtensions.cs @@ -4,7 +4,7 @@ namespace Discord.Rest; internal static class InteractionMetadataExtensions { - public static IMessageInteractionMetadata ToInteractionMetadata(this API.MessageInteractionMetadata metadata) + public static IMessageInteractionMetadata ToInteractionMetadata(this API.MessageInteractionMetadata metadata, BaseDiscordClient discord) { switch (metadata.Type) { @@ -12,28 +12,31 @@ internal static class InteractionMetadataExtensions return new ApplicationCommandInteractionMetadata( metadata.Id, metadata.Type, - metadata.UserId, + metadata.User.Id, metadata.IntegrationOwners.ToImmutableDictionary(), metadata.OriginalResponseMessageId.IsSpecified ? metadata.OriginalResponseMessageId.Value : null, - metadata.Name.GetValueOrDefault(null)); + metadata.Name.GetValueOrDefault(null), + RestUser.Create(discord, metadata.User)); case InteractionType.MessageComponent: return new MessageComponentInteractionMetadata( metadata.Id, metadata.Type, - metadata.UserId, + metadata.User.Id, metadata.IntegrationOwners.ToImmutableDictionary(), metadata.OriginalResponseMessageId.IsSpecified ? metadata.OriginalResponseMessageId.Value : null, - metadata.InteractedMessageId.GetValueOrDefault(0)); + metadata.InteractedMessageId.GetValueOrDefault(0), + RestUser.Create(discord, metadata.User)); case InteractionType.ModalSubmit: return new ModalSubmitInteractionMetadata( metadata.Id, metadata.Type, - metadata.UserId, + metadata.User.Id, metadata.IntegrationOwners.ToImmutableDictionary(), metadata.OriginalResponseMessageId.IsSpecified ? metadata.OriginalResponseMessageId.Value : null, - metadata.TriggeringInteractionMetadata.GetValueOrDefault(null)?.ToInteractionMetadata()); + metadata.TriggeringInteractionMetadata.GetValueOrDefault(null)?.ToInteractionMetadata(discord), + RestUser.Create(discord, metadata.User)); default: return null; diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs index 58026e70..34af97d8 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs @@ -211,7 +211,7 @@ namespace Discord.WebSocket } if (model.InteractionMetadata.IsSpecified) - InteractionMetadata = model.InteractionMetadata.Value.ToInteractionMetadata(); + InteractionMetadata = model.InteractionMetadata.Value.ToInteractionMetadata(Discord); if (model.Poll.IsSpecified) Poll = model.Poll.Value.ToEntity();