diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2023-04-13 16:29:56 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2023-04-13 16:29:56 -0400 |
commit | c084230767053e942b29941a8728f421e256cf1d (patch) | |
tree | ae58dc5d3978930ec5ed1fb0e65d108b56369d42 /src/discord/discord.cpp | |
parent | 7b5dc8a86532cf00ab49a1922dbd4ce21cdaf01f (diff) | |
parent | 44ab35dfd591c4c357673cc2ce3cb3a6964a1fff (diff) | |
download | abaddon-portaudio-c084230767053e942b29941a8728f421e256cf1d.tar.gz abaddon-portaudio-c084230767053e942b29941a8728f421e256cf1d.zip |
Merge branch 'master' of https://github.com/uowuo/abaddon into voice
Diffstat (limited to 'src/discord/discord.cpp')
-rw-r--r-- | src/discord/discord.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/discord/discord.cpp b/src/discord/discord.cpp index 6913ccf..64988d2 100644 --- a/src/discord/discord.cpp +++ b/src/discord/discord.cpp @@ -94,6 +94,18 @@ const UserData &DiscordClient::GetUserData() const { return m_user_data; } +const UserGuildSettingsData &DiscordClient::GetUserGuildSettings() const { + return m_user_guild_settings; +} + +std::optional<UserGuildSettingsEntry> DiscordClient::GetSettingsForGuild(Snowflake id) const { + if (const auto it = m_user_guild_settings.Entries.find(id); it != m_user_guild_settings.Entries.end()) { + return it->second; + } + + return std::nullopt; +} + std::vector<Snowflake> DiscordClient::GetUserSortedGuilds() const { // sort order is unfolder'd guilds sorted by id descending, then guilds in folders in array order // todo: make sure folder'd guilds are sorted properly @@ -1701,6 +1713,8 @@ void DiscordClient::HandleGatewayReady(const GatewayMessage &msg) { m_session_id = data.SessionID; m_user_data = data.SelfUser; m_user_settings = data.Settings; + m_user_guild_settings = data.GuildSettings; + // TODO handle update HandleReadyReadState(data); HandleReadyGuildSettings(data); @@ -2118,6 +2132,9 @@ void DiscordClient::HandleGatewayMessageAck(const GatewayMessage &msg) { void DiscordClient::HandleGatewayUserGuildSettingsUpdate(const GatewayMessage &msg) { UserGuildSettingsUpdateData data = msg.Data; + + m_user_guild_settings.Entries[data.Settings.GuildID] = data.Settings; + const bool for_dms = !data.Settings.GuildID.IsValid(); const auto channels = for_dms ? GetPrivateChannels() : GetChannelsInGuild(data.Settings.GuildID); @@ -2678,7 +2695,7 @@ void DiscordClient::HandleReadyGuildSettings(const ReadyEventData &data) { } const auto now = Snowflake::FromNow(); - for (const auto &entry : data.GuildSettings.Entries) { + for (const auto &[guild_id, entry] : data.GuildSettings.Entries) { // even if muted is true a guild/channel can be unmuted if the current time passes mute_config.end_time if (entry.Muted) { if (entry.MuteConfig.EndTime.has_value()) { |