From 14d0968c926b36da2d8d4e5c12b456ea52d5f8f3 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Thu, 3 Jun 2021 03:59:25 -0400 Subject: basic support of per-guild avatars --- discord/user.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'discord/user.cpp') diff --git a/discord/user.cpp b/discord/user.cpp index d1f6755..a68346e 100644 --- a/discord/user.cpp +++ b/discord/user.cpp @@ -13,11 +13,33 @@ bool UserData::HasAnimatedAvatar() const { return Avatar.size() > 0 && Avatar[0] == 'a' && Avatar[1] == '_'; } +std::string UserData::GetAvatarURL(Snowflake guild_id, std::string ext, std::string size) const { + const auto member = Abaddon::Get().GetDiscordClient().GetMember(ID, guild_id); + if (member.has_value() && member->Avatar.has_value()) + return "https://cdn.discordapp.com/guilds/" + + std::to_string(guild_id) + "/users/" + std::to_string(ID) + + "/avatars/" + *member->Avatar + "." + + ext + "?" + "size=" + size; + else + return GetAvatarURL(ext, size); +} + +std::string UserData::GetAvatarURL(const std::optional &guild_id, std::string ext, std::string size) const { + if (guild_id.has_value()) + return GetAvatarURL(*guild_id, ext, size); + else + return GetAvatarURL(ext, size); +} + std::string UserData::GetAvatarURL(std::string ext, std::string size) const { if (HasAvatar()) return "https://cdn.discordapp.com/avatars/" + std::to_string(ID) + "/" + Avatar + "." + ext + "?size=" + size; else - return "https://cdn.discordapp.com/embed/avatars/" + std::to_string(std::stoul(Discriminator) % 5) + ".png"; // size isn't respected by the cdn + return GetDefaultAvatarURL(); +} + +std::string UserData::GetDefaultAvatarURL() const { + return "https://cdn.discordapp.com/embed/avatars/" + std::to_string(std::stoul(Discriminator) % 5) + ".png"; // size isn't respected by the cdn } Snowflake UserData::GetHoistedRole(Snowflake guild_id, bool with_color) const { -- cgit v1.2.3