summaryrefslogtreecommitdiff
path: root/src/discord
diff options
context:
space:
mode:
Diffstat (limited to 'src/discord')
-rw-r--r--src/discord/discord.cpp13
-rw-r--r--src/discord/discord.hpp1
-rw-r--r--src/discord/store.cpp22
-rw-r--r--src/discord/store.hpp1
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);