summaryrefslogtreecommitdiff
path: root/discord
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2021-02-15 02:26:50 -0500
committerouwou <26526779+ouwou@users.noreply.github.com>2021-02-15 02:26:50 -0500
commitb1c7ac7120642799b887ffd41567c0a8fa819a48 (patch)
tree29fa14f31111a9aece73b0b19718c665cfa08863 /discord
parent14138ca568a8ca43620b0af364e09002ec01c52c (diff)
downloadabaddon-portaudio-b1c7ac7120642799b887ffd41567c0a8fa819a48.tar.gz
abaddon-portaudio-b1c7ac7120642799b887ffd41567c0a8fa819a48.zip
open dm tries to bring you to new dm if it doesnt exist now
Diffstat (limited to 'discord')
-rw-r--r--discord/discord.cpp14
-rw-r--r--discord/discord.hpp1
2 files changed, 13 insertions, 2 deletions
diff --git a/discord/discord.cpp b/discord/discord.cpp
index 5b6bf4e..0b97a8a 100644
--- a/discord/discord.cpp
+++ b/discord/discord.cpp
@@ -420,10 +420,20 @@ void DiscordClient::UpdateStatus(PresenceStatus status, bool is_afk, const Activ
}
void DiscordClient::CreateDM(Snowflake user_id) {
- // actual client uses an array called recipients
+ CreateDM(user_id, [](...) {});
+}
+
+void DiscordClient::CreateDM(Snowflake user_id, sigc::slot<void(bool success, Snowflake channel_id)> callback) {
CreateDMObject obj;
obj.Recipients.push_back(user_id);
- m_http.MakePOST("/users/@me/channels", nlohmann::json(obj).dump(), [](auto) {});
+ m_http.MakePOST("/users/@me/channels", nlohmann::json(obj).dump(), [this, callback](const http::response &response) {
+ if (!CheckCode(response)) {
+ callback(false, Snowflake::Invalid);
+ return;
+ }
+ auto channel = nlohmann::json::parse(response.text).get<ChannelData>();
+ callback(response.status_code == 200, channel.ID);
+ });
}
std::optional<Snowflake> DiscordClient::FindDM(Snowflake user_id) {
diff --git a/discord/discord.hpp b/discord/discord.hpp
index 42eb197..6ac714d 100644
--- a/discord/discord.hpp
+++ b/discord/discord.hpp
@@ -108,6 +108,7 @@ public:
void UpdateStatus(PresenceStatus status, bool is_afk);
void UpdateStatus(PresenceStatus status, bool is_afk, const ActivityData &obj);
void CreateDM(Snowflake user_id);
+ void CreateDM(Snowflake user_id, sigc::slot<void(bool success, Snowflake channel_id)> callback);
std::optional<Snowflake> FindDM(Snowflake user_id); // wont find group dms
void AddReaction(Snowflake id, Glib::ustring param);
void RemoveReaction(Snowflake id, Glib::ustring param);