@@ -34,12 +34,12 @@ namespace Discord.Rest | |||||
/// <param name="config">The configuration to be used with the client.</param> | /// <param name="config">The configuration to be used with the client.</param> | ||||
public DiscordRestClient(DiscordRestConfig config) : base(config, CreateApiClient(config)) | public DiscordRestClient(DiscordRestConfig config) : base(config, CreateApiClient(config)) | ||||
{ | { | ||||
APIOnInteractionCreation = config.APIOnRestInteractionCreation; | |||||
_apiOnCreation = config.APIOnRestInteractionCreation; | |||||
} | } | ||||
// used for socket client rest access | // used for socket client rest access | ||||
internal DiscordRestClient(DiscordRestConfig config, API.DiscordRestApiClient api) : base(config, api) | internal DiscordRestClient(DiscordRestConfig config, API.DiscordRestApiClient api) : base(config, api) | ||||
{ | { | ||||
APIOnInteractionCreation = config.APIOnRestInteractionCreation; | |||||
_apiOnCreation = config.APIOnRestInteractionCreation; | |||||
} | } | ||||
private static API.DiscordRestApiClient CreateApiClient(DiscordRestConfig config) | private static API.DiscordRestApiClient CreateApiClient(DiscordRestConfig config) | ||||
@@ -88,7 +88,7 @@ namespace Discord.Rest | |||||
#region Rest interactions | #region Rest interactions | ||||
internal readonly bool APIOnInteractionCreation; | |||||
private readonly bool _apiOnCreation; | |||||
public bool IsValidHttpInteraction(string publicKey, string signature, string timestamp, string body) | public bool IsValidHttpInteraction(string publicKey, string signature, string timestamp, string body) | ||||
=> IsValidHttpInteraction(publicKey, signature, timestamp, Encoding.UTF8.GetBytes(body)); | => IsValidHttpInteraction(publicKey, signature, timestamp, Encoding.UTF8.GetBytes(body)); | ||||
@@ -121,8 +121,8 @@ namespace Discord.Rest | |||||
/// A <see cref="RestInteraction"/> that represents the incoming http interaction. | /// A <see cref="RestInteraction"/> that represents the incoming http interaction. | ||||
/// </returns> | /// </returns> | ||||
/// <exception cref="BadSignatureException">Thrown when the signature doesn't match the public key.</exception> | /// <exception cref="BadSignatureException">Thrown when the signature doesn't match the public key.</exception> | ||||
public Task<RestInteraction> ParseHttpInteractionAsync(string publicKey, string signature, string timestamp, string body) | |||||
=> ParseHttpInteractionAsync(publicKey, signature, timestamp, Encoding.UTF8.GetBytes(body)); | |||||
public Task<RestInteraction> ParseHttpInteractionAsync(string publicKey, string signature, string timestamp, string body, bool? doApiCallOnCreation = null) | |||||
=> ParseHttpInteractionAsync(publicKey, signature, timestamp, Encoding.UTF8.GetBytes(body), doApiCallOnCreation); | |||||
/// <summary> | /// <summary> | ||||
/// Creates a <see cref="RestInteraction"/> from a http message. | /// Creates a <see cref="RestInteraction"/> from a http message. | ||||
@@ -135,7 +135,7 @@ namespace Discord.Rest | |||||
/// A <see cref="RestInteraction"/> that represents the incoming http interaction. | /// A <see cref="RestInteraction"/> that represents the incoming http interaction. | ||||
/// </returns> | /// </returns> | ||||
/// <exception cref="BadSignatureException">Thrown when the signature doesn't match the public key.</exception> | /// <exception cref="BadSignatureException">Thrown when the signature doesn't match the public key.</exception> | ||||
public async Task<RestInteraction> ParseHttpInteractionAsync(string publicKey, string signature, string timestamp, byte[] body) | |||||
public async Task<RestInteraction> ParseHttpInteractionAsync(string publicKey, string signature, string timestamp, byte[] body, bool? doApiCallOnCreation = null) | |||||
{ | { | ||||
if (!IsValidHttpInteraction(publicKey, signature, timestamp, body)) | if (!IsValidHttpInteraction(publicKey, signature, timestamp, body)) | ||||
{ | { | ||||
@@ -146,12 +146,12 @@ namespace Discord.Rest | |||||
using (var jsonReader = new JsonTextReader(textReader)) | using (var jsonReader = new JsonTextReader(textReader)) | ||||
{ | { | ||||
var model = Serializer.Deserialize<API.Interaction>(jsonReader); | var model = Serializer.Deserialize<API.Interaction>(jsonReader); | ||||
return await RestInteraction.CreateAsync(this, model); | |||||
return await RestInteraction.CreateAsync(this, model, doApiCallOnCreation ?? _apiOnCreation); | |||||
} | } | ||||
} | } | ||||
#endregion | #endregion | ||||
public async Task<RestApplication> GetApplicationInfoAsync(RequestOptions options = null) | public async Task<RestApplication> GetApplicationInfoAsync(RequestOptions options = null) | ||||
{ | { | ||||
return _applicationInfo ??= await ClientHelper.GetApplicationInfoAsync(this, options).ConfigureAwait(false); | return _applicationInfo ??= await ClientHelper.GetApplicationInfoAsync(this, options).ConfigureAwait(false); | ||||
@@ -27,20 +27,20 @@ namespace Discord.Rest | |||||
{ | { | ||||
} | } | ||||
internal static async Task<RestCommandBaseData> CreateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel) | |||||
internal static async Task<RestCommandBaseData> CreateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel, bool doApiCall) | |||||
{ | { | ||||
var entity = new RestCommandBaseData(client, model); | var entity = new RestCommandBaseData(client, model); | ||||
await entity.UpdateAsync(client, model, guild, channel).ConfigureAwait(false); | |||||
await entity.UpdateAsync(client, model, guild, channel, doApiCall).ConfigureAwait(false); | |||||
return entity; | return entity; | ||||
} | } | ||||
internal virtual async Task UpdateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel) | |||||
internal virtual async Task UpdateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel, bool doApiCall) | |||||
{ | { | ||||
Name = model.Name; | Name = model.Name; | ||||
if (model.Resolved.IsSpecified && ResolvableData == null) | if (model.Resolved.IsSpecified && ResolvableData == null) | ||||
{ | { | ||||
ResolvableData = new RestResolvableData<Model>(); | ResolvableData = new RestResolvableData<Model>(); | ||||
await ResolvableData.PopulateAsync(client, guild, channel, model).ConfigureAwait(false); | |||||
await ResolvableData.PopulateAsync(client, guild, channel, model, doApiCall).ConfigureAwait(false); | |||||
} | } | ||||
} | } | ||||
@@ -22,7 +22,7 @@ namespace Discord.Rest | |||||
internal readonly Dictionary<ulong, Attachment> Attachments | internal readonly Dictionary<ulong, Attachment> Attachments | ||||
= new Dictionary<ulong, Attachment>(); | = new Dictionary<ulong, Attachment>(); | ||||
internal async Task PopulateAsync(DiscordRestClient discord, RestGuild guild, IRestMessageChannel channel, T model) | |||||
internal async Task PopulateAsync(DiscordRestClient discord, RestGuild guild, IRestMessageChannel channel, T model, bool doApiCall) | |||||
{ | { | ||||
var resolved = model.Resolved.Value; | var resolved = model.Resolved.Value; | ||||
@@ -38,7 +38,7 @@ namespace Discord.Rest | |||||
if (resolved.Channels.IsSpecified) | if (resolved.Channels.IsSpecified) | ||||
{ | { | ||||
var channels = discord.APIOnInteractionCreation ? await guild.GetChannelsAsync().ConfigureAwait(false) : null; | |||||
var channels = doApiCall ? await guild.GetChannelsAsync().ConfigureAwait(false) : null; | |||||
foreach (var channelModel in resolved.Channels.Value) | foreach (var channelModel in resolved.Channels.Value) | ||||
{ | { | ||||
@@ -88,7 +88,7 @@ namespace Discord.Rest | |||||
foreach (var msg in resolved.Messages.Value) | foreach (var msg in resolved.Messages.Value) | ||||
{ | { | ||||
channel ??= (IRestMessageChannel)(Channels.FirstOrDefault(x => x.Key == msg.Value.ChannelId).Value | channel ??= (IRestMessageChannel)(Channels.FirstOrDefault(x => x.Key == msg.Value.ChannelId).Value | ||||
?? (discord.APIOnInteractionCreation | |||||
?? (doApiCall | |||||
? await discord.GetChannelAsync(msg.Value.ChannelId).ConfigureAwait(false) | ? await discord.GetChannelAsync(msg.Value.ChannelId).ConfigureAwait(false) | ||||
: null)); | : null)); | ||||
@@ -20,22 +20,22 @@ namespace Discord.Rest | |||||
} | } | ||||
internal new static async Task<RestMessageCommand> CreateAsync(DiscordRestClient client, Model model) | |||||
internal new static async Task<RestMessageCommand> CreateAsync(DiscordRestClient client, Model model, bool doApiCall) | |||||
{ | { | ||||
var entity = new RestMessageCommand(client, model); | var entity = new RestMessageCommand(client, model); | ||||
await entity.UpdateAsync(client, model).ConfigureAwait(false); | |||||
await entity.UpdateAsync(client, model, doApiCall).ConfigureAwait(false); | |||||
return entity; | return entity; | ||||
} | } | ||||
internal override async Task UpdateAsync(DiscordRestClient client, Model model) | |||||
internal override async Task UpdateAsync(DiscordRestClient client, Model model, bool doApiCall) | |||||
{ | { | ||||
await base.UpdateAsync(client, model).ConfigureAwait(false); | |||||
await base.UpdateAsync(client, model, doApiCall).ConfigureAwait(false); | |||||
var dataModel = model.Data.IsSpecified | var dataModel = model.Data.IsSpecified | ||||
? (DataModel)model.Data.Value | ? (DataModel)model.Data.Value | ||||
: null; | : null; | ||||
Data = await RestMessageCommandData.CreateAsync(client, dataModel, Guild, Channel).ConfigureAwait(false); | |||||
Data = await RestMessageCommandData.CreateAsync(client, dataModel, Guild, Channel, doApiCall).ConfigureAwait(false); | |||||
} | } | ||||
//IMessageCommandInteraction | //IMessageCommandInteraction | ||||
@@ -23,15 +23,15 @@ namespace Discord.Rest | |||||
/// <b>Note</b> Not implemented for <see cref="RestMessageCommandData"/> | /// <b>Note</b> Not implemented for <see cref="RestMessageCommandData"/> | ||||
/// </remarks> | /// </remarks> | ||||
public override IReadOnlyCollection<IApplicationCommandInteractionDataOption> Options | public override IReadOnlyCollection<IApplicationCommandInteractionDataOption> Options | ||||
=> throw new System.NotImplementedException(); | |||||
=> throw new NotImplementedException(); | |||||
internal RestMessageCommandData(DiscordRestClient client, Model model) | internal RestMessageCommandData(DiscordRestClient client, Model model) | ||||
: base(client, model) { } | : base(client, model) { } | ||||
internal new static async Task<RestMessageCommandData> CreateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel) | |||||
internal new static async Task<RestMessageCommandData> CreateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel, bool doApiCall) | |||||
{ | { | ||||
var entity = new RestMessageCommandData(client, model); | var entity = new RestMessageCommandData(client, model); | ||||
await entity.UpdateAsync(client, model, guild, channel).ConfigureAwait(false); | |||||
await entity.UpdateAsync(client, model, guild, channel, doApiCall).ConfigureAwait(false); | |||||
return entity; | return entity; | ||||
} | } | ||||
@@ -23,14 +23,14 @@ namespace Discord.Rest | |||||
{ | { | ||||
} | } | ||||
internal new static async Task<RestUserCommand> CreateAsync(DiscordRestClient client, Model model) | |||||
internal new static async Task<RestUserCommand> CreateAsync(DiscordRestClient client, Model model, bool doApiCall) | |||||
{ | { | ||||
var entity = new RestUserCommand(client, model); | var entity = new RestUserCommand(client, model); | ||||
await entity.UpdateAsync(client, model).ConfigureAwait(false); | |||||
await entity.UpdateAsync(client, model, doApiCall).ConfigureAwait(false); | |||||
return entity; | return entity; | ||||
} | } | ||||
internal override async Task UpdateAsync(DiscordRestClient client, Model model) | |||||
internal override async Task UpdateAsync(DiscordRestClient client, Model model, bool doApiCall) | |||||
{ | { | ||||
await base.UpdateAsync(client, model).ConfigureAwait(false); | await base.UpdateAsync(client, model).ConfigureAwait(false); | ||||
@@ -38,7 +38,7 @@ namespace Discord.Rest | |||||
? (DataModel)model.Data.Value | ? (DataModel)model.Data.Value | ||||
: null; | : null; | ||||
Data = await RestUserCommandData.CreateAsync(client, dataModel, Guild, Channel).ConfigureAwait(false); | |||||
Data = await RestUserCommandData.CreateAsync(client, dataModel, Guild, Channel, doApiCall).ConfigureAwait(false); | |||||
} | } | ||||
//IUserCommandInteractionData | //IUserCommandInteractionData | ||||
@@ -26,10 +26,10 @@ namespace Discord.Rest | |||||
internal RestUserCommandData(DiscordRestClient client, Model model) | internal RestUserCommandData(DiscordRestClient client, Model model) | ||||
: base(client, model) { } | : base(client, model) { } | ||||
internal new static async Task<RestUserCommandData> CreateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel) | |||||
internal new static async Task<RestUserCommandData> CreateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel, bool doApiCall) | |||||
{ | { | ||||
var entity = new RestUserCommandData(client, model); | var entity = new RestUserCommandData(client, model); | ||||
await entity.UpdateAsync(client, model, guild, channel).ConfigureAwait(false); | |||||
await entity.UpdateAsync(client, model, guild, channel, doApiCall).ConfigureAwait(false); | |||||
return entity; | return entity; | ||||
} | } | ||||
@@ -37,15 +37,15 @@ namespace Discord.Rest | |||||
Data = new RestMessageComponentData(dataModel); | Data = new RestMessageComponentData(dataModel); | ||||
} | } | ||||
internal new static async Task<RestMessageComponent> CreateAsync(DiscordRestClient client, Model model) | |||||
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).ConfigureAwait(false); | |||||
await entity.UpdateAsync(client, model, doApiCall).ConfigureAwait(false); | |||||
return entity; | return entity; | ||||
} | } | ||||
internal override async Task UpdateAsync(DiscordRestClient discord, Model model) | |||||
internal override async Task UpdateAsync(DiscordRestClient discord, Model model, bool doApiCall) | |||||
{ | { | ||||
await base.UpdateAsync(discord, model).ConfigureAwait(false); | |||||
await base.UpdateAsync(discord, model, doApiCall).ConfigureAwait(false); | |||||
if (model.Message.IsSpecified && model.ChannelId.IsSpecified) | if (model.Message.IsSpecified && model.ChannelId.IsSpecified) | ||||
{ | { | ||||
@@ -26,10 +26,10 @@ namespace Discord.Rest | |||||
Data = new RestModalData(dataModel); | Data = new RestModalData(dataModel); | ||||
} | } | ||||
internal new static async Task<RestModal> CreateAsync(DiscordRestClient client, ModelBase model) | |||||
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); | |||||
await entity.UpdateAsync(client, model, doApiCall); | |||||
return entity; | return entity; | ||||
} | } | ||||
@@ -100,11 +100,11 @@ namespace Discord.Rest | |||||
: DateTime.UtcNow; | : DateTime.UtcNow; | ||||
} | } | ||||
internal static async Task<RestInteraction> CreateAsync(DiscordRestClient client, Model model) | |||||
internal static async Task<RestInteraction> CreateAsync(DiscordRestClient client, Model model, bool doApiCall) | |||||
{ | { | ||||
if(model.Type == InteractionType.Ping) | if(model.Type == InteractionType.Ping) | ||||
{ | { | ||||
return await RestPingInteraction.CreateAsync(client, model); | |||||
return await RestPingInteraction.CreateAsync(client, model, doApiCall); | |||||
} | } | ||||
if (model.Type == InteractionType.ApplicationCommand) | if (model.Type == InteractionType.ApplicationCommand) | ||||
@@ -118,26 +118,26 @@ namespace Discord.Rest | |||||
return dataModel.Type switch | return dataModel.Type switch | ||||
{ | { | ||||
ApplicationCommandType.Slash => await RestSlashCommand.CreateAsync(client, model).ConfigureAwait(false), | |||||
ApplicationCommandType.Message => await RestMessageCommand.CreateAsync(client, model).ConfigureAwait(false), | |||||
ApplicationCommandType.User => await RestUserCommand.CreateAsync(client, model).ConfigureAwait(false), | |||||
ApplicationCommandType.Slash => await RestSlashCommand.CreateAsync(client, model, doApiCall).ConfigureAwait(false), | |||||
ApplicationCommandType.Message => await RestMessageCommand.CreateAsync(client, model, doApiCall).ConfigureAwait(false), | |||||
ApplicationCommandType.User => await RestUserCommand.CreateAsync(client, model, doApiCall).ConfigureAwait(false), | |||||
_ => null | _ => null | ||||
}; | }; | ||||
} | } | ||||
if (model.Type == InteractionType.MessageComponent) | if (model.Type == InteractionType.MessageComponent) | ||||
return await RestMessageComponent.CreateAsync(client, model).ConfigureAwait(false); | |||||
return await RestMessageComponent.CreateAsync(client, model, doApiCall).ConfigureAwait(false); | |||||
if (model.Type == InteractionType.ApplicationCommandAutocomplete) | if (model.Type == InteractionType.ApplicationCommandAutocomplete) | ||||
return await RestAutocompleteInteraction.CreateAsync(client, model).ConfigureAwait(false); | |||||
return await RestAutocompleteInteraction.CreateAsync(client, model, doApiCall).ConfigureAwait(false); | |||||
if (model.Type == InteractionType.ModalSubmit) | if (model.Type == InteractionType.ModalSubmit) | ||||
return await RestModal.CreateAsync(client, model).ConfigureAwait(false); | |||||
return await RestModal.CreateAsync(client, model, doApiCall).ConfigureAwait(false); | |||||
return null; | return null; | ||||
} | } | ||||
internal virtual async Task UpdateAsync(DiscordRestClient discord, Model model) | |||||
internal virtual async Task UpdateAsync(DiscordRestClient discord, Model model, bool doApiCall) | |||||
{ | { | ||||
IsDMInteraction = !model.GuildId.IsSpecified; | IsDMInteraction = !model.GuildId.IsSpecified; | ||||
@@ -151,7 +151,7 @@ namespace Discord.Rest | |||||
if (Guild == null && model.GuildId.IsSpecified) | if (Guild == null && model.GuildId.IsSpecified) | ||||
{ | { | ||||
GuildId = model.GuildId.Value; | GuildId = model.GuildId.Value; | ||||
if (discord.APIOnInteractionCreation) | |||||
if (doApiCall) | |||||
Guild = await discord.GetGuildAsync(model.GuildId.Value); | Guild = await discord.GetGuildAsync(model.GuildId.Value); | ||||
else | else | ||||
Guild = null; | Guild = null; | ||||
@@ -174,7 +174,7 @@ namespace Discord.Rest | |||||
try | try | ||||
{ | { | ||||
ChannelId = model.ChannelId.Value; | ChannelId = model.ChannelId.Value; | ||||
if (discord.APIOnInteractionCreation) | |||||
if (doApiCall) | |||||
Channel = (IRestMessageChannel)await discord.GetChannelAsync(model.ChannelId.Value); | Channel = (IRestMessageChannel)await discord.GetChannelAsync(model.ChannelId.Value); | ||||
else | else | ||||
Channel = null; | Channel = null; | ||||
@@ -201,9 +201,6 @@ namespace Discord.Rest | |||||
return json.ToString(); | return json.ToString(); | ||||
} | } | ||||
public async Task<RestGuild> GetGuildAsync() | |||||
=> await | |||||
/// <inheritdoc/> | /// <inheritdoc/> | ||||
public abstract string Defer(bool ephemeral = false, RequestOptions options = null); | public abstract string Defer(bool ephemeral = false, RequestOptions options = null); | ||||
/// <summary> | /// <summary> | ||||
@@ -18,10 +18,10 @@ namespace Discord.Rest | |||||
{ | { | ||||
} | } | ||||
internal static new async Task<RestPingInteraction> CreateAsync(DiscordRestClient client, Model model) | |||||
internal static new async Task<RestPingInteraction> CreateAsync(DiscordRestClient client, Model model, bool doApiCall) | |||||
{ | { | ||||
var entity = new RestPingInteraction(client, model.Id); | var entity = new RestPingInteraction(client, model.Id); | ||||
await entity.UpdateAsync(client, model); | |||||
await entity.UpdateAsync(client, model, doApiCall); | |||||
return entity; | return entity; | ||||
} | } | ||||
@@ -32,10 +32,10 @@ namespace Discord.Rest | |||||
Data = new RestAutocompleteInteractionData(dataModel); | Data = new RestAutocompleteInteractionData(dataModel); | ||||
} | } | ||||
internal new static async Task<RestAutocompleteInteraction> CreateAsync(DiscordRestClient client, Model model) | |||||
internal new static async Task<RestAutocompleteInteraction> CreateAsync(DiscordRestClient client, Model model, bool doApiCall) | |||||
{ | { | ||||
var entity = new RestAutocompleteInteraction(client, model); | var entity = new RestAutocompleteInteraction(client, model); | ||||
await entity.UpdateAsync(client, model).ConfigureAwait(false); | |||||
await entity.UpdateAsync(client, model, doApiCall).ConfigureAwait(false); | |||||
return entity; | return entity; | ||||
} | } | ||||
@@ -23,22 +23,22 @@ namespace Discord.Rest | |||||
{ | { | ||||
} | } | ||||
internal new static async Task<RestSlashCommand> CreateAsync(DiscordRestClient client, Model model) | |||||
internal new static async Task<RestSlashCommand> CreateAsync(DiscordRestClient client, Model model, bool doApiCall) | |||||
{ | { | ||||
var entity = new RestSlashCommand(client, model); | var entity = new RestSlashCommand(client, model); | ||||
await entity.UpdateAsync(client, model).ConfigureAwait(false); | await entity.UpdateAsync(client, model).ConfigureAwait(false); | ||||
return entity; | return entity; | ||||
} | } | ||||
internal override async Task UpdateAsync(DiscordRestClient client, Model model) | |||||
internal override async Task UpdateAsync(DiscordRestClient client, Model model, bool doApiCall) | |||||
{ | { | ||||
await base.UpdateAsync(client, model).ConfigureAwait(false); | |||||
await base.UpdateAsync(client, model, doApiCall).ConfigureAwait(false); | |||||
var dataModel = model.Data.IsSpecified | var dataModel = model.Data.IsSpecified | ||||
? (DataModel)model.Data.Value | ? (DataModel)model.Data.Value | ||||
: null; | : null; | ||||
Data = await RestSlashCommandData.CreateAsync(client, dataModel, Guild, Channel).ConfigureAwait(false); | |||||
Data = await RestSlashCommandData.CreateAsync(client, dataModel, Guild, Channel, doApiCall).ConfigureAwait(false); | |||||
} | } | ||||
//ISlashCommandInteraction | //ISlashCommandInteraction | ||||
@@ -14,15 +14,15 @@ namespace Discord.Rest | |||||
internal RestSlashCommandData(DiscordRestClient client, Model model) | internal RestSlashCommandData(DiscordRestClient client, Model model) | ||||
: base(client, model) { } | : base(client, model) { } | ||||
internal static new async Task<RestSlashCommandData> CreateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel) | |||||
internal static new async Task<RestSlashCommandData> CreateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel, bool doApiCall) | |||||
{ | { | ||||
var entity = new RestSlashCommandData(client, model); | var entity = new RestSlashCommandData(client, model); | ||||
await entity.UpdateAsync(client, model, guild, channel).ConfigureAwait(false); | |||||
await entity.UpdateAsync(client, model, guild, channel, doApiCall).ConfigureAwait(false); | |||||
return entity; | return entity; | ||||
} | } | ||||
internal override async Task UpdateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel) | |||||
internal override async Task UpdateAsync(DiscordRestClient client, Model model, RestGuild guild, IRestMessageChannel channel, bool doApiCall) | |||||
{ | { | ||||
await base.UpdateAsync(client, model, guild, channel).ConfigureAwait(false); | |||||
await base.UpdateAsync(client, model, guild, channel, doApiCall).ConfigureAwait(false); | |||||
Options = model.Options.IsSpecified | Options = model.Options.IsSpecified | ||||
? model.Options.Value.Select(x => new RestSlashCommandDataOption(this, x)).ToImmutableArray() | ? model.Options.Value.Select(x => new RestSlashCommandDataOption(this, x)).ToImmutableArray() | ||||