You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.4 KiB
39 lines
1.4 KiB
using System;
|
|
using System.Threading.Tasks;
|
|
using Discord.API.Rest;
|
|
using ImageModel = Discord.API.Image;
|
|
using Model = Discord.API.Webhook;
|
|
|
|
namespace Discord.Rest
|
|
{
|
|
internal static class WebhookHelper
|
|
{
|
|
public static async Task<Model> ModifyAsync(IWebhook webhook, BaseDiscordClient client,
|
|
Action<WebhookProperties> func, RequestOptions options)
|
|
{
|
|
var args = new WebhookProperties();
|
|
func(args);
|
|
var apiArgs = new ModifyWebhookParams
|
|
{
|
|
Avatar = args.Image.IsSpecified ? args.Image.Value?.ToModel() : Optional.Create<ImageModel?>(),
|
|
Name = args.Name
|
|
};
|
|
|
|
if (!apiArgs.Avatar.IsSpecified && webhook.AvatarId != null)
|
|
apiArgs.Avatar = new ImageModel(webhook.AvatarId);
|
|
|
|
if (args.Channel.IsSpecified)
|
|
apiArgs.ChannelId = args.Channel.Value.Id;
|
|
else if (args.ChannelId.IsSpecified)
|
|
apiArgs.ChannelId = args.ChannelId.Value;
|
|
|
|
return await client.ApiClient.ModifyWebhookAsync(webhook.Id, apiArgs, options).ConfigureAwait(false);
|
|
}
|
|
public static async Task DeleteAsync(IWebhook webhook, BaseDiscordClient client, RequestOptions options)
|
|
{
|
|
await client.ApiClient.DeleteWebhookAsync(webhook.Id, options).ConfigureAwait(false);
|
|
}
|
|
|
|
}
|
|
}
|