From eed8fb3833f822b25ae63adf20f2c261b550a1bf Mon Sep 17 00:00:00 2001 From: RogueException Date: Sun, 12 Jun 2016 17:23:47 -0300 Subject: [PATCH] added MESSAGE_DELETE_BULK --- .../API/Gateway/MessageDeleteBulkEvent.cs | 13 ++++++++++++ src/Discord.Net/DiscordSocketClient.cs | 21 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 src/Discord.Net/API/Gateway/MessageDeleteBulkEvent.cs diff --git a/src/Discord.Net/API/Gateway/MessageDeleteBulkEvent.cs b/src/Discord.Net/API/Gateway/MessageDeleteBulkEvent.cs new file mode 100644 index 000000000..8e7951530 --- /dev/null +++ b/src/Discord.Net/API/Gateway/MessageDeleteBulkEvent.cs @@ -0,0 +1,13 @@ +using Newtonsoft.Json; +using System.Collections.Generic; + +namespace Discord.API.Gateway +{ + public class MessageDeleteBulkEvent + { + [JsonProperty("channel_id")] + public ulong ChannelId { get; set; } + [JsonProperty("ids")] + public IEnumerable Ids { get; set; } + } +} diff --git a/src/Discord.Net/DiscordSocketClient.cs b/src/Discord.Net/DiscordSocketClient.cs index 13050fc96..47a554249 100644 --- a/src/Discord.Net/DiscordSocketClient.cs +++ b/src/Discord.Net/DiscordSocketClient.cs @@ -805,6 +805,27 @@ namespace Discord } } break; + case "MESSAGE_DELETE_BULK": + { + await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_DELETE_BULK)").ConfigureAwait(false); + + var data = (payload as JToken).ToObject(_serializer); + var channel = DataStore.GetChannel(data.ChannelId) as ICachedMessageChannel; + if (channel != null) + { + foreach (var id in data.Ids) + { + var msg = channel.RemoveMessage(id); + await MessageDeleted.RaiseAsync(msg).ConfigureAwait(false); + } + } + else + { + await _gatewayLogger.WarningAsync("MESSAGE_DELETE_BULK referenced an unknown channel.").ConfigureAwait(false); + return; + } + } + break; //Statuses case "PRESENCE_UPDATE":