From 7f1d3df4a5d640ae3a885886139236e8f9c5555c Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Thu, 3 Mar 2022 23:45:30 -0500 Subject: start sending request guild members for unknown members --- src/abaddon.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src/abaddon.cpp') diff --git a/src/abaddon.cpp b/src/abaddon.cpp index 51f8052..b287e17 100644 --- a/src/abaddon.cpp +++ b/src/abaddon.cpp @@ -325,6 +325,22 @@ void Abaddon::ShowGuildVerificationGateDialog(Snowflake guild_id) { } } +void Abaddon::CheckMessagesForMembers(const ChannelData &chan, const std::vector &msgs) { + if (!chan.GuildID.has_value()) return; + + // TODO sql query + std::set fetch; + std::set ids; + for (const auto& msg : msgs) + ids.insert(msg.Author.ID); + for (const auto id : ids) { + const auto member = m_discord.GetMember(id, *chan.GuildID); + if (!member.has_value()) + fetch.insert(id); + } + m_discord.RequestMembers(*chan.GuildID, fetch.begin(), fetch.end()); +} + void Abaddon::SetupUserMenu() { m_user_menu = Gtk::manage(new Gtk::Menu); m_user_menu_insert_mention = Gtk::manage(new Gtk::MenuItem("Insert Mention")); @@ -536,7 +552,8 @@ void Abaddon::ActionChannelOpened(Snowflake id) { if (m_channels_requested.find(id) == m_channels_requested.end()) { // dont fire requests we know will fail if (can_access) { - m_discord.FetchMessagesInChannel(id, [this, id](const std::vector &msgs) { + m_discord.FetchMessagesInChannel(id, [channel, this, id](const std::vector &msgs) { + CheckMessagesForMembers(*channel, msgs); m_main_window->UpdateChatWindowContents(); m_channels_requested.insert(id); }); -- cgit v1.2.3