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;
}