fix: lead moderator role detection (#6642)

Reviewed-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
This commit is contained in:
Julia
2025-12-11 05:33:15 -03:00
committed by GitHub
parent bd21db125f
commit 76eabd3b2e
3 changed files with 26 additions and 15 deletions
+24 -15
View File
@@ -394,7 +394,8 @@ void IrcMessageHandler::parsePrivMessageInto(
if (badgesTag.isValid())
{
auto parsedBadges = parseBadges(badgesTag.toString());
channel->setMod(parsedBadges.contains("moderator"));
channel->setMod(parsedBadges.contains("moderator") ||
parsedBadges.contains("lead_moderator"));
channel->setVIP(parsedBadges.contains("vip"));
channel->setStaff(parsedBadges.contains("staff"));
}
@@ -582,27 +583,35 @@ void IrcMessageHandler::handleUserStateMessage(Communi::IrcMessage *message)
return;
}
// Checking if currentUser is a VIP or staff member
QVariant badgesTag = message->tag("badges");
if (badgesTag.isValid())
auto *tc = dynamic_cast<TwitchChannel *>(c.get());
if (tc != nullptr)
{
auto *tc = dynamic_cast<TwitchChannel *>(c.get());
if (tc != nullptr)
bool hasModBadge = false;
// Checking if currentUser is a VIP, staff member or has moderator badges
QVariant badgesTag = message->tag("badges");
if (badgesTag.isValid())
{
auto parsedBadges = parseBadges(badgesTag.toString());
tc->setVIP(parsedBadges.contains("vip"));
tc->setStaff(parsedBadges.contains("staff"));
}
}
// Checking if currentUser is a moderator
QVariant modTag = message->tag("mod");
if (modTag.isValid())
{
auto *tc = dynamic_cast<TwitchChannel *>(c.get());
if (tc != nullptr)
hasModBadge = parsedBadges.contains("moderator") ||
parsedBadges.contains("lead_moderator");
}
if (hasModBadge)
{
tc->setMod(modTag == "1");
tc->setMod(true);
}
else
{
QVariant modTag = message->tag("mod");
if (modTag.isValid())
{
// Also checking if the mod tag is present, since badges sometimes disappear in IRC
tc->setMod(modTag == "1");
}
}
}
}