feat: Support the WEBHOOKS_UPDATED event (#2384)

Co-authored-by: Armano den Boef <68127614+Rozen4334@users.noreply.github.com>
This commit is contained in:
CottageDwellingCat
2022-08-01 10:38:10 -05:00
committed by GitHub
parent 246282dda3
commit 010e8e828f
4 changed files with 60 additions and 16 deletions

View File

@@ -0,0 +1,13 @@
using Newtonsoft.Json;
namespace Discord.API.Gateway
{
internal class WebhooksUpdatedEvent
{
[JsonProperty("guild_id")]
public ulong GuildId { get; set; }
[JsonProperty("channel_id")]
public ulong ChannelId { get; set; }
}
}

View File

@@ -877,5 +877,20 @@ namespace Discord.WebSocket
} }
internal readonly AsyncEvent<Func<SocketCustomSticker, Task>> _guildStickerDeleted = new AsyncEvent<Func<SocketCustomSticker, Task>>(); internal readonly AsyncEvent<Func<SocketCustomSticker, Task>> _guildStickerDeleted = new AsyncEvent<Func<SocketCustomSticker, Task>>();
#endregion #endregion
#region Webhooks
/// <summary>
/// Fired when a webhook is modified, moved, or deleted. If the webhook was
/// moved the channel represents the destination channel, not the source.
/// </summary>
public event Func<SocketGuild, SocketChannel, Task> WebhooksUpdated
{
add { _webhooksUpdated.Add(value); }
remove { _webhooksUpdated.Remove(value); }
}
internal readonly AsyncEvent<Func<SocketGuild, SocketChannel, Task>> _webhooksUpdated = new AsyncEvent<Func<SocketGuild, SocketChannel, Task>>();
#endregion
} }
} }

View File

@@ -496,6 +496,8 @@ namespace Discord.WebSocket
client.GuildScheduledEventStarted += (arg) => _guildScheduledEventStarted.InvokeAsync(arg); client.GuildScheduledEventStarted += (arg) => _guildScheduledEventStarted.InvokeAsync(arg);
client.GuildScheduledEventUserAdd += (arg1, arg2) => _guildScheduledEventUserAdd.InvokeAsync(arg1, arg2); client.GuildScheduledEventUserAdd += (arg1, arg2) => _guildScheduledEventUserAdd.InvokeAsync(arg1, arg2);
client.GuildScheduledEventUserRemove += (arg1, arg2) => _guildScheduledEventUserRemove.InvokeAsync(arg1, arg2); client.GuildScheduledEventUserRemove += (arg1, arg2) => _guildScheduledEventUserRemove.InvokeAsync(arg1, arg2);
client.WebhooksUpdated += (arg1, arg2) => _webhooksUpdated.InvokeAsync(arg1, arg2);
} }
#endregion #endregion

View File

@@ -2839,6 +2839,23 @@ namespace Discord.WebSocket
#endregion #endregion
#region Webhooks
case "WEBHOOKS_UPDATE":
{
var data = (payload as JToken).ToObject<WebhooksUpdatedEvent>(_serializer);
type = "WEBHOOKS_UPDATE";
await _gatewayLogger.DebugAsync("Received Dispatch (WEBHOOKS_UPDATE)").ConfigureAwait(false);
var guild = State.GetGuild(data.GuildId);
var channel = State.GetChannel(data.ChanelId);
await TimedInvokeAsync(_webhooksUpdated, nameof(WebhooksUpdated), guild, channel);
}
break;
#endregion
#region Ignored (User only) #region Ignored (User only)
case "CHANNEL_PINS_ACK": case "CHANNEL_PINS_ACK":
await _gatewayLogger.DebugAsync("Ignored Dispatch (CHANNEL_PINS_ACK)").ConfigureAwait(false); await _gatewayLogger.DebugAsync("Ignored Dispatch (CHANNEL_PINS_ACK)").ConfigureAwait(false);
@@ -2858,9 +2875,6 @@ namespace Discord.WebSocket
case "USER_SETTINGS_UPDATE": case "USER_SETTINGS_UPDATE":
await _gatewayLogger.DebugAsync("Ignored Dispatch (USER_SETTINGS_UPDATE)").ConfigureAwait(false); await _gatewayLogger.DebugAsync("Ignored Dispatch (USER_SETTINGS_UPDATE)").ConfigureAwait(false);
break; break;
case "WEBHOOKS_UPDATE":
await _gatewayLogger.DebugAsync("Ignored Dispatch (WEBHOOKS_UPDATE)").ConfigureAwait(false);
break;
#endregion #endregion
#region Others #region Others