Check for ignored phrases/users in channel point redemptions (#3102)

This commit is contained in:
pajlada
2021-08-01 15:44:04 +02:00
committed by GitHub
parent 77f683577f
commit 784fdd28b2
9 changed files with 108 additions and 56 deletions
+21 -40
View File
@@ -114,44 +114,12 @@ TwitchMessageBuilder::TwitchMessageBuilder(
bool TwitchMessageBuilder::isIgnored() const
{
if (SharedMessageBuilder::isIgnored())
{
return true;
}
auto app = getApp();
if (getSettings()->enableTwitchBlockedUsers &&
this->tags.contains("user-id"))
{
auto sourceUserID = this->tags.value("user-id").toString();
auto blocks =
app->accounts->twitch.getCurrent()->accessBlockedUserIds();
if (auto it = blocks->find(sourceUserID); it != blocks->end())
{
switch (static_cast<ShowIgnoredUsersMessages>(
getSettings()->showBlockedUsersMessages.getValue()))
{
case ShowIgnoredUsersMessages::IfModerator:
if (this->channel->isMod() ||
this->channel->isBroadcaster())
return false;
break;
case ShowIgnoredUsersMessages::IfBroadcaster:
if (this->channel->isBroadcaster())
return false;
break;
case ShowIgnoredUsersMessages::Never:
break;
}
return true;
}
}
return false;
return isIgnoredMessage({
/*.message = */ this->originalMessage_,
/*.twitchUserID = */ this->tags.value("user-id").toString(),
/*.isMod = */ this->channel->isMod(),
/*.isBroadcaster = */ this->channel->isBroadcaster(),
});
}
void TwitchMessageBuilder::triggerHighlights()
@@ -190,7 +158,9 @@ MessagePtr TwitchMessageBuilder::build()
this->args.channelPointRewardId);
if (reward)
{
this->appendChannelPointRewardMessage(reward.get(), this);
this->appendChannelPointRewardMessage(
reward.get(), this, this->channel->isMod(),
this->channel->isBroadcaster());
}
}
@@ -1261,8 +1231,19 @@ Outcome TwitchMessageBuilder::tryParseCheermote(const QString &string)
}
void TwitchMessageBuilder::appendChannelPointRewardMessage(
const ChannelPointReward &reward, MessageBuilder *builder)
const ChannelPointReward &reward, MessageBuilder *builder, bool isMod,
bool isBroadcaster)
{
if (isIgnoredMessage({
/*.message = */ "",
/*.twitchUserID = */ reward.user.id,
/*.isMod = */ isMod,
/*.isBroadcaster = */ isBroadcaster,
}))
{
return;
}
builder->emplace<TimestampElement>();
QString redeemed = "Redeemed";
QStringList textList;