summaryrefslogtreecommitdiff
path: root/discord
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2020-10-01 19:13:42 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2020-10-01 19:13:42 -0400
commitdddcef117cffe732f0faa84ea6ce524d015d1792 (patch)
tree6cf1d85c39da4dece65501879992c0abd659c122 /discord
parent9cb0eefa5666f1c19eb44d1b9167d21919a0af21 (diff)
downloadabaddon-portaudio-dddcef117cffe732f0faa84ea6ce524d015d1792.tar.gz
abaddon-portaudio-dddcef117cffe732f0faa84ea6ce524d015d1792.zip
handle MESSAGE_DELETE_BULK
Diffstat (limited to 'discord')
-rw-r--r--discord/discord.cpp15
-rw-r--r--discord/discord.hpp1
-rw-r--r--discord/objects.cpp6
-rw-r--r--discord/objects.hpp9
4 files changed, 30 insertions, 1 deletions
diff --git a/discord/discord.cpp b/discord/discord.cpp
index abbbbad..2ceb308 100644
--- a/discord/discord.cpp
+++ b/discord/discord.cpp
@@ -455,6 +455,9 @@ void DiscordClient::HandleGatewayMessage(std::string str) {
case GatewayEvent::GUILD_DELETE: {
HandleGatewayGuildDelete(m);
} break;
+ case GatewayEvent::MESSAGE_DELETE_BULK: {
+ HandleGatewayMessageDeleteBulk(m);
+ } break;
}
} break;
default:
@@ -511,10 +514,19 @@ void DiscordClient::HandleGatewayMessageCreate(const GatewayMessage &msg) {
void DiscordClient::HandleGatewayMessageDelete(const GatewayMessage &msg) {
MessageDeleteData data = msg.Data;
- m_signal_message_delete.emit(data.ID, data.ChannelID);
auto *cur = m_store.GetMessage(data.ID);
if (cur != nullptr)
cur->SetDeleted();
+ m_signal_message_delete.emit(data.ID, data.ChannelID);
+}
+
+void DiscordClient::HandleGatewayMessageDeleteBulk(const GatewayMessage &msg) {
+ MessageDeleteBulkData data = msg.Data;
+ for (const auto &id : data.IDs) {
+ auto *cur = m_store.GetMessage(id);
+ cur->SetDeleted();
+ m_signal_message_delete.emit(id, data.ChannelID);
+ }
}
void DiscordClient::HandleGatewayMessageUpdate(const GatewayMessage &msg) {
@@ -639,6 +651,7 @@ void DiscordClient::LoadEventMap() {
m_event_map["GUILD_MEMBER_LIST_UPDATE"] = GatewayEvent::GUILD_MEMBER_LIST_UPDATE;
m_event_map["GUILD_CREATE"] = GatewayEvent::GUILD_CREATE;
m_event_map["GUILD_DELETE"] = GatewayEvent::GUILD_DELETE;
+ m_event_map["MESSAGE_DELETE_BULK"] = GatewayEvent::MESSAGE_DELETE_BULK;
}
DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() {
diff --git a/discord/discord.hpp b/discord/discord.hpp
index f8c76e6..025d969 100644
--- a/discord/discord.hpp
+++ b/discord/discord.hpp
@@ -115,6 +115,7 @@ private:
void HandleGatewayGuildMemberListUpdate(const GatewayMessage &msg);
void HandleGatewayGuildCreate(const GatewayMessage &msg);
void HandleGatewayGuildDelete(const GatewayMessage &msg);
+ void HandleGatewayMessageDeleteBulk(const GatewayMessage &msg);
void HeartbeatThread();
void SendIdentify();
diff --git a/discord/objects.cpp b/discord/objects.cpp
index 4449dac..76de515 100644
--- a/discord/objects.cpp
+++ b/discord/objects.cpp
@@ -18,6 +18,12 @@ void from_json(const nlohmann::json &j, MessageDeleteData &m) {
JS_O("guild_id", m.GuildID);
}
+void from_json(const nlohmann::json &j, MessageDeleteBulkData &m) {
+ JS_D("ids", m.IDs);
+ JS_D("channel_id", m.ChannelID);
+ JS_O("guild_id", m.GuildID);
+}
+
void from_json(const nlohmann::json &j, GuildMemberListUpdateMessage::GroupItem &m) {
m.Type = "group";
JS_D("id", m.ID);
diff --git a/discord/objects.hpp b/discord/objects.hpp
index c5e6e4b..00a4110 100644
--- a/discord/objects.hpp
+++ b/discord/objects.hpp
@@ -33,6 +33,7 @@ enum class GatewayEvent : int {
GUILD_MEMBER_LIST_UPDATE,
GUILD_CREATE,
GUILD_DELETE,
+ MESSAGE_DELETE_BULK,
};
struct GatewayMessage {
@@ -58,6 +59,14 @@ struct MessageDeleteData {
friend void from_json(const nlohmann::json &j, MessageDeleteData &m);
};
+struct MessageDeleteBulkData {
+ std::vector<Snowflake> IDs; //
+ Snowflake ChannelID; //
+ Snowflake GuildID; // opt
+
+ friend void from_json(const nlohmann::json &j, MessageDeleteBulkData &m);
+};
+
struct GuildMemberListUpdateMessage {
struct Item {
std::string Type;