From b1c7ac7120642799b887ffd41567c0a8fa819a48 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Mon, 15 Feb 2021 02:26:50 -0500 Subject: open dm tries to bring you to new dm if it doesnt exist now --- discord/discord.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'discord/discord.cpp') 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 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(); + callback(response.status_code == 200, channel.ID); + }); } std::optional DiscordClient::FindDM(Snowflake user_id) { -- cgit v1.2.3