From fd6e3ad8dfd0204162918ed1df9c492bb71011b6 Mon Sep 17 00:00:00 2001 From: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Date: Tue, 23 Dec 2025 20:18:01 +0100 Subject: [PATCH] Fix NRE in Rest Interaction Guild User Resolution (#3210) --- .../MessageComponents/RestMessageComponent.cs | 13 +++++++------ .../Entities/Interactions/Modals/RestModal.cs | 12 ++++++------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs index 52dfad62..ab4cc4f6 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs @@ -19,7 +19,7 @@ namespace Discord.Rest /// /// Gets the data received with this interaction, contains the button that was clicked. /// - public new RestMessageComponentData Data { get; } + public new RestMessageComponentData Data { get; private set; } /// public RestUserMessage Message { get; private set; } @@ -29,17 +29,18 @@ namespace Discord.Rest internal RestMessageComponent(BaseDiscordClient client, Model model) : base(client, model.Id) { - var dataModel = model.Data.IsSpecified - ? (DataModel)model.Data.Value - : null; - - Data = new RestMessageComponentData(dataModel, client, Guild); } internal new static async Task CreateAsync(DiscordRestClient client, Model model, bool doApiCall) { var entity = new RestMessageComponent(client, model); await entity.UpdateAsync(client, model, doApiCall).ConfigureAwait(false); + + var dataModel = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + entity.Data = new RestMessageComponentData(dataModel, client, entity.Guild); return entity; } internal override async Task UpdateAsync(DiscordRestClient discord, Model model, bool doApiCall) diff --git a/src/Discord.Net.Rest/Entities/Interactions/Modals/RestModal.cs b/src/Discord.Net.Rest/Entities/Interactions/Modals/RestModal.cs index e7d08e41..09cc59ab 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/Modals/RestModal.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/Modals/RestModal.cs @@ -22,22 +22,22 @@ namespace Discord.Rest internal RestModal(DiscordRestClient client, ModelBase model) : base(client, model.Id) { - var dataModel = model.Data.IsSpecified - ? (DataModel)model.Data.Value - : null; - if (model.Message.IsSpecified && model.ChannelId.IsSpecified) { Message = RestUserMessage.Create(Discord, Channel, User, model.Message.Value); } - - Data = new RestModalData(dataModel, client, Guild); } internal new static async Task CreateAsync(DiscordRestClient client, ModelBase model, bool doApiCall) { var entity = new RestModal(client, model); await entity.UpdateAsync(client, model, doApiCall); + + var dataModel = model.Data.IsSpecified + ? (DataModel)model.Data.Value + : null; + + entity.Data = new RestModalData(dataModel, client, entity.Guild); return entity; }