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 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/discord/store.cpp') 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 ( ?, ? -- cgit v1.2.3