diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2022-03-03 23:45:30 -0500 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2022-03-03 23:45:30 -0500 |
commit | 7f1d3df4a5d640ae3a885886139236e8f9c5555c (patch) | |
tree | 0449ccf558357717fa5b570f53828535e24d8b7e /src/discord/discord.hpp | |
parent | 17f1289c84af11b6e02f5f5de4714c8aad18e47e (diff) | |
download | abaddon-portaudio-7f1d3df4a5d640ae3a885886139236e8f9c5555c.tar.gz abaddon-portaudio-7f1d3df4a5d640ae3a885886139236e8f9c5555c.zip |
start sending request guild members for unknown members
Diffstat (limited to 'src/discord/discord.hpp')
-rw-r--r-- | src/discord/discord.hpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/discord/discord.hpp b/src/discord/discord.hpp index 4a7593d..63f8bd5 100644 --- a/src/discord/discord.hpp +++ b/src/discord/discord.hpp @@ -152,6 +152,16 @@ public: bool CanModifyRole(Snowflake guild_id, Snowflake role_id) const; bool CanModifyRole(Snowflake guild_id, Snowflake role_id, Snowflake user_id) const; + // send op 8 to get member data for unknown members + template<typename Iter> + void RequestMembers(Snowflake guild_id, Iter begin, Iter end) { + RequestGuildMembersMessage obj; + obj.GuildID = guild_id; + obj.Presences = false; + obj.UserIDs = { begin, end }; + m_websocket.Send(obj); + } + // real client doesn't seem to use the single role endpoints so neither do we template<typename Iter> auto SetMemberRoles(Snowflake guild_id, Snowflake user_id, Iter begin, Iter end, sigc::slot<void(DiscordError code)> callback) { @@ -262,6 +272,7 @@ private: void HandleGatewayThreadMemberListUpdate(const GatewayMessage &msg); void HandleGatewayMessageAck(const GatewayMessage &msg); void HandleGatewayUserGuildSettingsUpdate(const GatewayMessage &msg); + void HandleGatewayGuildMembersChunk(const GatewayMessage &msg); void HandleGatewayReadySupplemental(const GatewayMessage &msg); void HandleGatewayReconnect(const GatewayMessage &msg); void HandleGatewayInvalidSession(const GatewayMessage &msg); @@ -372,6 +383,7 @@ public: typedef sigc::signal<void, ThreadUpdateData> type_signal_thread_update; typedef sigc::signal<void, ThreadMemberListUpdateData> type_signal_thread_member_list_update; typedef sigc::signal<void, MessageAckData> type_signal_message_ack; + typedef sigc::signal<void, GuildMembersChunkData> type_signal_guild_members_chunk; // not discord dispatch events typedef sigc::signal<void, Snowflake> type_signal_added_to_thread; @@ -427,6 +439,7 @@ public: type_signal_thread_update signal_thread_update(); type_signal_thread_member_list_update signal_thread_member_list_update(); type_signal_message_ack signal_message_ack(); + type_signal_guild_members_chunk signal_guild_members_chunk(); type_signal_added_to_thread signal_added_to_thread(); type_signal_removed_from_thread signal_removed_from_thread(); @@ -479,6 +492,7 @@ protected: type_signal_thread_update m_signal_thread_update; type_signal_thread_member_list_update m_signal_thread_member_list_update; type_signal_message_ack m_signal_message_ack; + type_signal_guild_members_chunk m_signal_guild_members_chunk; type_signal_removed_from_thread m_signal_removed_from_thread; type_signal_added_to_thread m_signal_added_to_thread; |