feat(eventsub): implement suspicious user update (#6012)

This commit is contained in:
nerix
2025-03-01 18:05:07 +01:00
committed by GitHub
parent c03b883f05
commit 1332743716
10 changed files with 508 additions and 4 deletions
+17
View File
@@ -1554,6 +1554,22 @@ void TwitchChannel::refreshPubSub()
},
},
});
this->eventSubSuspiciousUserUpdateHandle =
getApp()->getEventSub()->subscribe(eventsub::SubscriptionRequest{
.subscriptionType = "channel.suspicious_user.update",
.subscriptionVersion = "1",
.conditions =
{
{
"broadcaster_user_id",
roomId,
},
{
"moderator_user_id",
currentAccount->getUserId(),
},
},
});
this->eventSubChannelChatUserMessageHoldHandle.reset();
this->eventSubChannelChatUserMessageUpdateHandle.reset();
@@ -1564,6 +1580,7 @@ void TwitchChannel::refreshPubSub()
this->eventSubAutomodMessageHoldHandle.reset();
this->eventSubAutomodMessageUpdateHandle.reset();
this->eventSubSuspiciousUserMessageHandle.reset();
this->eventSubSuspiciousUserUpdateHandle.reset();
this->eventSubChannelChatUserMessageHoldHandle =
getApp()->getEventSub()->subscribe(eventsub::SubscriptionRequest{
+1
View File
@@ -512,6 +512,7 @@ private:
eventsub::SubscriptionHandle eventSubAutomodMessageHoldHandle;
eventsub::SubscriptionHandle eventSubAutomodMessageUpdateHandle;
eventsub::SubscriptionHandle eventSubSuspiciousUserMessageHandle;
eventsub::SubscriptionHandle eventSubSuspiciousUserUpdateHandle;
eventsub::SubscriptionHandle eventSubChannelChatUserMessageHoldHandle;
eventsub::SubscriptionHandle eventSubChannelChatUserMessageUpdateHandle;
+19 -3
View File
@@ -300,9 +300,25 @@ void Connection::onChannelSuspiciousUserUpdate(
const lib::messages::Metadata &metadata,
const lib::payload::channel_suspicious_user_update::v1::Payload &payload)
{
(void)metadata;
qCDebug(LOG) << "On channel suspicious user update for"
<< payload.event.broadcasterUserLogin.qt();
auto *channel = dynamic_cast<TwitchChannel *>(
getApp()
->getTwitch()
->getChannelOrEmpty(payload.event.broadcasterUserLogin.qt())
.get());
if (!channel || channel->isEmpty())
{
qCDebug(LOG) << "Channel Suspicious User Update for broadcaster we're "
"not interested in"
<< payload.event.broadcasterUserLogin.qt();
return;
}
auto time = chronoToQDateTime(metadata.messageTimestamp);
auto message = makeSuspiciousUserUpdate(channel, time, payload.event);
runInGuiThread([channel, message] {
channel->addMessage(message, MessageContext::Original);
});
}
void Connection::onChannelChatUserMessageHold(
@@ -756,6 +756,50 @@ MessagePtr makeSuspiciousUserMessageBody(
return builder.release();
}
MessagePtr makeSuspiciousUserUpdate(
TwitchChannel *channel, const QDateTime &time,
const lib::payload::channel_suspicious_user_update::v1::Event &event)
{
EventSubMessageBuilder builder(channel, time);
builder->flags.set(MessageFlag::DoNotTriggerNotification);
builder->loginName = event.moderatorUserLogin.qt();
QString text;
builder.appendUser(event.moderatorUserName, event.moderatorUserLogin, text);
switch (event.lowTrustStatus)
{
case lib::suspicious_users::Status::None: {
builder.emplaceSystemTextAndUpdate(u"removed"_s, text);
builder.appendUser(event.userName, event.userLogin, text);
builder.emplaceSystemTextAndUpdate(
u"from the suspicious user list."_s, text);
}
break;
case lib::suspicious_users::Status::ActiveMonitoring: {
builder.emplaceSystemTextAndUpdate(u"added"_s, text);
builder.appendUser(event.userName, event.userLogin, text);
builder.emplaceSystemTextAndUpdate(
u"as a monitored suspicious chatter."_s, text);
}
break;
case lib::suspicious_users::Status::Restricted: {
builder.emplaceSystemTextAndUpdate(u"added"_s, text);
builder.appendUser(event.userName, event.userLogin, text);
builder.emplaceSystemTextAndUpdate(
u"as a restricted suspicious chatter."_s, text);
}
break;
}
builder->messageText = text;
builder->searchText = text;
return builder.release();
}
MessagePtr makeUserMessageHeldMessage(
TwitchChannel *channel, const QDateTime &time,
const lib::payload::channel_chat_user_message_hold::v1::Event &event)
@@ -7,6 +7,7 @@
#include "twitch-eventsub-ws/payloads/channel-chat-user-message-update-v1.hpp"
#include "twitch-eventsub-ws/payloads/channel-moderate-v2.hpp"
#include "twitch-eventsub-ws/payloads/channel-suspicious-user-message-v1.hpp"
#include "twitch-eventsub-ws/payloads/channel-suspicious-user-update-v1.hpp"
#include <QDateTime>
@@ -167,6 +168,10 @@ MessagePtr makeSuspiciousUserMessageBody(
TwitchChannel *channel, const QDateTime &time,
const lib::payload::channel_suspicious_user_message::v1::Event &event);
MessagePtr makeSuspiciousUserUpdate(
TwitchChannel *channel, const QDateTime &time,
const lib::payload::channel_suspicious_user_update::v1::Event &event);
MessagePtr makeUserMessageHeldMessage(
TwitchChannel *channel, const QDateTime &time,
const lib::payload::channel_chat_user_message_hold::v1::Event &event);