diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-02-28 02:00:15 -0500 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-02-28 02:00:15 -0500 |
commit | d6a8b8c33372fe41d9e7f8453d15f491b25680a6 (patch) | |
tree | 5510f4ae1065b55e950a013658eef336e5e876a8 /discord/discord.hpp | |
parent | 11358da24e0e73044aed389b1dbbf479808ca036 (diff) | |
download | abaddon-portaudio-d6a8b8c33372fe41d9e7f8453d15f491b25680a6.tar.gz abaddon-portaudio-d6a8b8c33372fe41d9e7f8453d15f491b25680a6.zip |
add members panel/change member roles
Diffstat (limited to 'discord/discord.hpp')
-rw-r--r-- | discord/discord.hpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/discord/discord.hpp b/discord/discord.hpp index c6723cd..c086aec 100644 --- a/discord/discord.hpp +++ b/discord/discord.hpp @@ -124,6 +124,16 @@ public: void AddGroupDMRecipient(Snowflake channel_id, Snowflake user_id); void RemoveGroupDMRecipient(Snowflake channel_id, Snowflake user_id); + // real client doesn't seem to use the single role endpoints so neither do we + template<typename Iter> + auto SetMemberRoles(Snowflake guild_id, Snowflake user_id, Iter begin, Iter end, sigc::slot<void(bool success)> callback) { + ModifyGuildMemberObject obj; + obj.Roles = { begin, end }; + m_http.MakePATCH("/guilds/" + std::to_string(guild_id) + "/members/" + std::to_string(user_id), nlohmann::json(obj).dump(), [this, callback](const http::response_type &response) { + callback(CheckCode(response, 200)); + }); + } + // FetchGuildBans fetches all bans+reasons via api, this func fetches stored bans (so usually just GUILD_BAN_ADD data) std::vector<BanData> GetBansInGuild(Snowflake guild_id); void FetchGuildBan(Snowflake guild_id, Snowflake user_id, sigc::slot<void(BanData)> callback); @@ -196,6 +206,7 @@ private: void HandleSocketClose(uint16_t code); bool CheckCode(const http::response_type &r); + bool CheckCode(const http::response_type &r, int expected); void StoreMessageData(Message &msg); |