handle MESSAGE_DELETE_BULK

This commit is contained in:
ouwou 2020-10-01 19:13:42 -04:00
parent 9cb0eefa56
commit dddcef117c
4 changed files with 30 additions and 1 deletions

View File

@ -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() {

View File

@ -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();

View File

@ -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);

View File

@ -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;