diff options
Diffstat (limited to 'src/discord')
-rw-r--r-- | src/discord/discord.cpp | 13 | ||||
-rw-r--r-- | src/discord/discord.hpp | 1 | ||||
-rw-r--r-- | src/discord/store.cpp | 22 | ||||
-rw-r--r-- | src/discord/store.hpp | 1 |
4 files changed, 23 insertions, 14 deletions
diff --git a/src/discord/discord.cpp b/src/discord/discord.cpp index d94f3df..bb29d77 100644 --- a/src/discord/discord.cpp +++ b/src/discord/discord.cpp @@ -552,19 +552,6 @@ void DiscordClient::UpdateStatus(PresenceStatus status, bool is_afk, const Activ m_signal_presence_update.emit(GetUserData(), status); } -void DiscordClient::CreateDM(Snowflake user_id, const sigc::slot<void(DiscordError code, Snowflake channel_id)> &callback) { - CreateDMObject obj; - obj.Recipients.push_back(user_id); - m_http.MakePOST("/users/@me/channels", nlohmann::json(obj).dump(), [callback](const http::response &response) { - if (!CheckCode(response)) { - callback(DiscordError::NONE, Snowflake::Invalid); - return; - } - auto channel = nlohmann::json::parse(response.text).get<ChannelData>(); - callback(GetCodeFromResponse(response), channel.ID); - }); -} - void DiscordClient::CloseDM(Snowflake channel_id) { m_http.MakeDELETE("/channels/" + std::to_string(channel_id), [](const http::response &response) { CheckCode(response); diff --git a/src/discord/discord.hpp b/src/discord/discord.hpp index 6310296..6bcd2d5 100644 --- a/src/discord/discord.hpp +++ b/src/discord/discord.hpp @@ -116,7 +116,6 @@ public: void BanUser(Snowflake user_id, Snowflake guild_id); // todo: reason, delete messages void UpdateStatus(PresenceStatus status, bool is_afk); void UpdateStatus(PresenceStatus status, bool is_afk, const ActivityData &obj); - void CreateDM(Snowflake user_id, const sigc::slot<void(DiscordError code, Snowflake channel_id)> &callback); void CloseDM(Snowflake channel_id); std::optional<Snowflake> FindDM(Snowflake user_id); // wont find group dms void AddReaction(Snowflake id, Glib::ustring param); 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 @@ -254,6 +254,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; BeginTransaction(); @@ -1881,6 +1889,20 @@ bool Store::CreateStatements() { return false; } + m_stmt_clr_member_roles = std::make_unique<Statement>(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<Statement>(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); |