From 96ec5bb6652b1a2eb3b6a11ed3468da190dad359 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Wed, 10 Aug 2022 23:20:27 -0400 Subject: fix removing roles from members (maybe) --- src/discord/store.cpp | 22 ++++++++++++++++++++++ src/discord/store.hpp | 1 + 2 files changed, 23 insertions(+) (limited to 'src') diff --git a/src/discord/store.cpp b/src/discord/store.cpp index 998bc41..f08f0c8 100644 --- a/src/discord/store.cpp +++ b/src/discord/store.cpp @@ -253,6 +253,14 @@ void Store::SetGuildMember(Snowflake guild_id, Snowflake user_id, const GuildMem s->Reset(); + { + auto &s = m_stmt_clr_member_roles; + s->Bind(1, user_id); + s->Bind(2, guild_id); + s->Step(); + s->Reset(); + } + { auto &s = m_stmt_set_member_roles; @@ -1881,6 +1889,20 @@ bool Store::CreateStatements() { return false; } + m_stmt_clr_member_roles = std::make_unique(m_db, R"( + DELETE FROM member_roles + WHERE user = ? AND + EXISTS ( + SELECT 1 FROM roles + WHERE member_roles.role = roles.id + AND roles.guild = ? + ) + )"); + if (!m_stmt_clr_member_roles->OK()) { + fprintf(stderr, "failed to prepare clear member roles statement: %s\n", m_db.ErrStr()); + return false; + } + m_stmt_set_guild_emoji = std::make_unique(m_db, R"( REPLACE INTO guild_emojis VALUES ( ?, ? diff --git a/src/discord/store.hpp b/src/discord/store.hpp index d863fa6..da97dd5 100644 --- a/src/discord/store.hpp +++ b/src/discord/store.hpp @@ -281,6 +281,7 @@ private: STMT(set_interaction); STMT(set_member_roles); STMT(get_member_roles); + STMT(clr_member_roles); STMT(set_guild_emoji); STMT(get_guild_emojis); STMT(clr_guild_emoji); -- cgit v1.2.3