summaryrefslogtreecommitdiff
path: root/discord/discord.cpp
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/discord.cpp
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/discord.cpp')
-rw-r--r--discord/discord.cpp14
1 files changed, 12 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) {