Parse usernames out of /mods and /vips messages (#3187)

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
This commit is contained in:
Mm2PL
2021-10-24 13:28:43 +00:00
committed by GitHub
parent 5112ec73b0
commit 5f7caebce0
4 changed files with 74 additions and 0 deletions
@@ -1438,4 +1438,49 @@ void TwitchMessageBuilder::deletionMessage(const DeleteAction &action,
builder->message().timeoutUser = "msg:" + action.messageId;
}
void TwitchMessageBuilder::modsOrVipsSystemMessage(QString prefix,
QStringList users,
TwitchChannel *channel,
MessageBuilder *builder)
{
builder->emplace<TimestampElement>();
builder->message().flags.set(MessageFlag::System);
builder->message().flags.set(MessageFlag::DoNotTriggerNotification);
builder->emplace<TextElement>(prefix, MessageElementFlag::Text,
MessageColor::System);
bool isFirst = true;
for (const QString &username : users)
{
if (!isFirst)
{
// this is used to add the ", " after each but the last entry
builder->emplace<TextElement>(",", MessageElementFlag::Text,
MessageColor::System);
}
isFirst = false;
MessageColor color = MessageColor::System;
if (getSettings()->colorUsernames)
{
if (auto userColor = channel->getUserColor(username);
userColor.isValid())
{
color = MessageColor(userColor);
}
}
builder
->emplace<TextElement>(username, MessageElementFlag::BoldUsername,
color, FontStyle::ChatMediumBold)
->setLink({Link::UserInfo, username})
->setTrailingSpace(false);
builder
->emplace<TextElement>(username,
MessageElementFlag::NonBoldUsername, color)
->setLink({Link::UserInfo, username})
->setTrailingSpace(false);
}
}
} // namespace chatterino