summaryrefslogtreecommitdiff
path: root/src/discord/message.cpp
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2023-03-16 20:27:59 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2023-03-16 20:27:59 -0400
commitb83bf2a622ecfb667cc89909ebae9180ed5ac117 (patch)
tree5e4ec1fc115f403bb61e57688eb79235d007a8de /src/discord/message.cpp
parent0e1e15eaeb662ae0f078428af84f3720d48a5b24 (diff)
downloadabaddon-portaudio-b83bf2a622ecfb667cc89909ebae9180ed5ac117.tar.gz
abaddon-portaudio-b83bf2a622ecfb667cc89909ebae9180ed5ac117.zip
handle role mentions
Diffstat (limited to 'src/discord/message.cpp')
-rw-r--r--src/discord/message.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/discord/message.cpp b/src/discord/message.cpp
index 5e15fa9..f5d8ad8 100644
--- a/src/discord/message.cpp
+++ b/src/discord/message.cpp
@@ -197,7 +197,7 @@ void from_json(const nlohmann::json &j, Message &m) {
JS_D("tts", m.IsTTS);
JS_D("mention_everyone", m.DoesMentionEveryone);
JS_D("mentions", m.Mentions);
- // JS_D("mention_roles", m.MentionRoles);
+ JS_D("mention_roles", m.MentionRoles);
// JS_O("mention_channels", m.MentionChannels);
JS_D("attachments", m.Attachments);
JS_D("embeds", m.Embeds);
@@ -235,6 +235,7 @@ void Message::from_json_edited(const nlohmann::json &j) {
JS_O("tts", IsTTS);
JS_O("mention_everyone", DoesMentionEveryone);
JS_O("mentions", Mentions);
+ JS_O("mention_roles", MentionRoles);
JS_O("embeds", Embeds);
JS_O("nonce", Nonce);
JS_O("pinned", IsPinned);
@@ -270,3 +271,11 @@ bool Message::DoesMentionEveryoneOrUser(Snowflake id) const noexcept {
return user.ID == id;
});
}
+
+bool Message::DoesMention(Snowflake id) const noexcept {
+ if (DoesMentionEveryoneOrUser(id)) return true;
+ if (!GuildID.has_value()) return false; // nothing left to check
+ const auto member = Abaddon::Get().GetDiscordClient().GetMember(id, *GuildID);
+ if (!member.has_value()) return false;
+ return std::find_first_of(MentionRoles.begin(), MentionRoles.end(), member->Roles.begin(), member->Roles.end()) != MentionRoles.end();
+}