Fix NRE in Rest Interaction Guild User Resolution (#3210)

This commit is contained in:
Cenk Ergen
2025-12-23 20:18:01 +01:00
committed by GitHub
parent 1e27c994f9
commit fd6e3ad8df
2 changed files with 13 additions and 12 deletions

View File

@@ -19,7 +19,7 @@ namespace Discord.Rest
/// <summary> /// <summary>
/// Gets the data received with this interaction, contains the button that was clicked. /// Gets the data received with this interaction, contains the button that was clicked.
/// </summary> /// </summary>
public new RestMessageComponentData Data { get; } public new RestMessageComponentData Data { get; private set; }
/// <inheritdoc cref="IComponentInteraction.Message"/> /// <inheritdoc cref="IComponentInteraction.Message"/>
public RestUserMessage Message { get; private set; } public RestUserMessage Message { get; private set; }
@@ -29,17 +29,18 @@ namespace Discord.Rest
internal RestMessageComponent(BaseDiscordClient client, Model model) internal RestMessageComponent(BaseDiscordClient client, Model model)
: base(client, model.Id) : 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<RestMessageComponent> CreateAsync(DiscordRestClient client, Model model, bool doApiCall) internal new static async Task<RestMessageComponent> CreateAsync(DiscordRestClient client, Model model, bool doApiCall)
{ {
var entity = new RestMessageComponent(client, model); var entity = new RestMessageComponent(client, model);
await entity.UpdateAsync(client, model, doApiCall).ConfigureAwait(false); 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; return entity;
} }
internal override async Task UpdateAsync(DiscordRestClient discord, Model model, bool doApiCall) internal override async Task UpdateAsync(DiscordRestClient discord, Model model, bool doApiCall)

View File

@@ -22,22 +22,22 @@ namespace Discord.Rest
internal RestModal(DiscordRestClient client, ModelBase model) internal RestModal(DiscordRestClient client, ModelBase model)
: base(client, model.Id) : base(client, model.Id)
{ {
var dataModel = model.Data.IsSpecified
? (DataModel)model.Data.Value
: null;
if (model.Message.IsSpecified && model.ChannelId.IsSpecified) if (model.Message.IsSpecified && model.ChannelId.IsSpecified)
{ {
Message = RestUserMessage.Create(Discord, Channel, User, model.Message.Value); Message = RestUserMessage.Create(Discord, Channel, User, model.Message.Value);
} }
Data = new RestModalData(dataModel, client, Guild);
} }
internal new static async Task<RestModal> CreateAsync(DiscordRestClient client, ModelBase model, bool doApiCall) internal new static async Task<RestModal> CreateAsync(DiscordRestClient client, ModelBase model, bool doApiCall)
{ {
var entity = new RestModal(client, model); var entity = new RestModal(client, model);
await entity.UpdateAsync(client, model, doApiCall); 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; return entity;
} }