forked from OpenGamers/abaddon
handle MESSAGE_DELETE_BULK
This commit is contained in:
@@ -455,6 +455,9 @@ void DiscordClient::HandleGatewayMessage(std::string str) {
|
|||||||
case GatewayEvent::GUILD_DELETE: {
|
case GatewayEvent::GUILD_DELETE: {
|
||||||
HandleGatewayGuildDelete(m);
|
HandleGatewayGuildDelete(m);
|
||||||
} break;
|
} break;
|
||||||
|
case GatewayEvent::MESSAGE_DELETE_BULK: {
|
||||||
|
HandleGatewayMessageDeleteBulk(m);
|
||||||
|
} break;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
default:
|
default:
|
||||||
@@ -511,10 +514,19 @@ void DiscordClient::HandleGatewayMessageCreate(const GatewayMessage &msg) {
|
|||||||
|
|
||||||
void DiscordClient::HandleGatewayMessageDelete(const GatewayMessage &msg) {
|
void DiscordClient::HandleGatewayMessageDelete(const GatewayMessage &msg) {
|
||||||
MessageDeleteData data = msg.Data;
|
MessageDeleteData data = msg.Data;
|
||||||
m_signal_message_delete.emit(data.ID, data.ChannelID);
|
|
||||||
auto *cur = m_store.GetMessage(data.ID);
|
auto *cur = m_store.GetMessage(data.ID);
|
||||||
if (cur != nullptr)
|
if (cur != nullptr)
|
||||||
cur->SetDeleted();
|
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) {
|
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_MEMBER_LIST_UPDATE"] = GatewayEvent::GUILD_MEMBER_LIST_UPDATE;
|
||||||
m_event_map["GUILD_CREATE"] = GatewayEvent::GUILD_CREATE;
|
m_event_map["GUILD_CREATE"] = GatewayEvent::GUILD_CREATE;
|
||||||
m_event_map["GUILD_DELETE"] = GatewayEvent::GUILD_DELETE;
|
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() {
|
DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() {
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ private:
|
|||||||
void HandleGatewayGuildMemberListUpdate(const GatewayMessage &msg);
|
void HandleGatewayGuildMemberListUpdate(const GatewayMessage &msg);
|
||||||
void HandleGatewayGuildCreate(const GatewayMessage &msg);
|
void HandleGatewayGuildCreate(const GatewayMessage &msg);
|
||||||
void HandleGatewayGuildDelete(const GatewayMessage &msg);
|
void HandleGatewayGuildDelete(const GatewayMessage &msg);
|
||||||
|
void HandleGatewayMessageDeleteBulk(const GatewayMessage &msg);
|
||||||
void HeartbeatThread();
|
void HeartbeatThread();
|
||||||
void SendIdentify();
|
void SendIdentify();
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,12 @@ void from_json(const nlohmann::json &j, MessageDeleteData &m) {
|
|||||||
JS_O("guild_id", m.GuildID);
|
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) {
|
void from_json(const nlohmann::json &j, GuildMemberListUpdateMessage::GroupItem &m) {
|
||||||
m.Type = "group";
|
m.Type = "group";
|
||||||
JS_D("id", m.ID);
|
JS_D("id", m.ID);
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ enum class GatewayEvent : int {
|
|||||||
GUILD_MEMBER_LIST_UPDATE,
|
GUILD_MEMBER_LIST_UPDATE,
|
||||||
GUILD_CREATE,
|
GUILD_CREATE,
|
||||||
GUILD_DELETE,
|
GUILD_DELETE,
|
||||||
|
MESSAGE_DELETE_BULK,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct GatewayMessage {
|
struct GatewayMessage {
|
||||||
@@ -58,6 +59,14 @@ struct MessageDeleteData {
|
|||||||
friend void from_json(const nlohmann::json &j, MessageDeleteData &m);
|
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 GuildMemberListUpdateMessage {
|
||||||
struct Item {
|
struct Item {
|
||||||
std::string Type;
|
std::string Type;
|
||||||
|
|||||||
Reference in New Issue
Block a user