summaryrefslogtreecommitdiff
path: root/src/discord/discord.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/discord/discord.cpp')
-rw-r--r--src/discord/discord.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/discord/discord.cpp b/src/discord/discord.cpp
index 385d6b7..e99cb5f 100644
--- a/src/discord/discord.cpp
+++ b/src/discord/discord.cpp
@@ -1646,6 +1646,15 @@ void DiscordClient::HandleGatewayMessage(std::string str) {
case GatewayEvent::GUILD_MEMBERS_CHUNK: {
HandleGatewayGuildMembersChunk(m);
} break;
+ case GatewayEvent::STAGE_INSTANCE_CREATE: {
+ HandleGatewayStageInstanceCreate(m);
+ } break;
+ case GatewayEvent::STAGE_INSTANCE_UPDATE: {
+ HandleGatewayStageInstanceUpdate(m);
+ } break;
+ case GatewayEvent::STAGE_INSTANCE_DELETE: {
+ HandleGatewayStageInstanceDelete(m);
+ } break;
#ifdef WITH_VOICE
case GatewayEvent::VOICE_STATE_UPDATE: {
HandleGatewayVoiceStateUpdate(m);
@@ -2296,6 +2305,29 @@ void DiscordClient::HandleGatewayGuildMembersChunk(const GatewayMessage &msg) {
m_store.EndTransaction();
}
+void DiscordClient::HandleGatewayStageInstanceCreate(const GatewayMessage &msg) {
+ StageInstance data = msg.Data;
+ spdlog::get("discord")->debug("STAGE_INSTANCE_CREATE: {} in {}", data.ID, data.ChannelID);
+ m_stage_instances[data.ID] = data;
+ m_channel_to_stage_instance[data.ChannelID] = data.ID;
+ m_signal_stage_instance_create.emit(data);
+}
+
+void DiscordClient::HandleGatewayStageInstanceUpdate(const GatewayMessage &msg) {
+ StageInstance data = msg.Data;
+ spdlog::get("discord")->debug("STAGE_INSTANCE_UPDATE: {} in {}", data.ID, data.ChannelID);
+ m_stage_instances[data.ID] = data;
+ m_signal_stage_instance_update.emit(data);
+}
+
+void DiscordClient::HandleGatewayStageInstanceDelete(const GatewayMessage &msg) {
+ StageInstance data = msg.Data;
+ spdlog::get("discord")->debug("STAGE_INSTANCE_DELETE: {} in {}", data.ID, data.ChannelID);
+ m_stage_instances.erase(data.ID);
+ m_channel_to_stage_instance.erase(data.ChannelID);
+ m_signal_stage_instance_delete.emit(data);
+}
+
#ifdef WITH_VOICE
/*
@@ -3001,6 +3033,9 @@ void DiscordClient::LoadEventMap() {
m_event_map["VOICE_STATE_UPDATE"] = GatewayEvent::VOICE_STATE_UPDATE;
m_event_map["VOICE_SERVER_UPDATE"] = GatewayEvent::VOICE_SERVER_UPDATE;
m_event_map["CALL_CREATE"] = GatewayEvent::CALL_CREATE;
+ m_event_map["STAGE_INSTANCE_CREATE"] = GatewayEvent::STAGE_INSTANCE_CREATE;
+ m_event_map["STAGE_INSTANCE_UPDATE"] = GatewayEvent::STAGE_INSTANCE_UPDATE;
+ m_event_map["STAGE_INSTANCE_DELETE"] = GatewayEvent::STAGE_INSTANCE_DELETE;
}
DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() {
@@ -3179,6 +3214,18 @@ DiscordClient::type_signal_guild_members_chunk DiscordClient::signal_guild_membe
return m_signal_guild_members_chunk;
}
+DiscordClient::type_signal_stage_instance_create DiscordClient::signal_stage_instance_create() {
+ return m_signal_stage_instance_create;
+}
+
+DiscordClient::type_signal_stage_instance_update DiscordClient::signal_stage_instance_update() {
+ return m_signal_stage_instance_update;
+}
+
+DiscordClient::type_signal_stage_instance_delete DiscordClient::signal_stage_instance_delete() {
+ return m_signal_stage_instance_delete;
+}
+
DiscordClient::type_signal_added_to_thread DiscordClient::signal_added_to_thread() {
return m_signal_added_to_thread;
}