feat(eventsub): handle unban requests (#6086)

This commit is contained in:
nerix
2025-03-16 16:31:14 +01:00
committed by GitHub
parent b515553a29
commit 820eb3d58c
10 changed files with 713 additions and 9 deletions
@@ -170,6 +170,17 @@ void Connection::onChannelModerate(
std::visit(
[&](auto &&action) {
using Action = std::remove_cvref_t<decltype(action)>;
static_assert(CanMakeModMessage<Action> ||
CanHandleModMessage<Action> ||
std::is_same_v<Action, std::string>,
"All actions must be handled");
if constexpr (std::is_same_v<Action, std::string>)
{
qCWarning(LOG) << "Unhandled moderation action:"
<< QUtf8StringView(action);
}
if constexpr (CanMakeModMessage<Action>)
{
EventSubMessageBuilder builder(channel, now);
@@ -588,6 +588,40 @@ void makeModerateMessage(
builder.setMessageAndSearchText(text);
}
void makeModerateMessage(
EventSubMessageBuilder &builder,
const lib::payload::channel_moderate::v2::Event &event,
const lib::payload::channel_moderate::v2::UnbanRequest &action)
{
builder->flags.set(MessageFlag::ModerationAction);
QString text;
builder.appendUser(event.moderatorUserName, event.moderatorUserLogin, text);
if (action.isApproved)
{
builder.emplaceSystemTextAndUpdate("approved", text);
}
else
{
builder.emplaceSystemTextAndUpdate("denied", text);
}
builder.appendOrEmplaceSystemTextAndUpdate("the unban request from", text);
builder.appendUser(action.userName, action.userLogin, text, false);
if (action.moderatorMessage.isEmpty())
{
builder.emplaceSystemTextAndUpdate(".", text);
}
else
{
builder.emplaceSystemTextAndUpdate(":", text);
builder.appendOrEmplaceSystemTextAndUpdate(action.moderatorMessage.qt(),
text);
}
builder.setMessageAndSearchText(text);
}
MessagePtr makeAutomodHoldMessageHeader(
TwitchChannel *channel, const QDateTime &time,
const lib::payload::automod_message_hold::v2::Event &event)
@@ -160,6 +160,12 @@ void makeModerateMessage(
const lib::payload::channel_moderate::v2::Event &event,
const lib::payload::channel_moderate::v2::Unraid &action);
/// <MODERATOR> {approved/denied} the unban request from <USER>[: <MESSAGE>]
void makeModerateMessage(
EventSubMessageBuilder &builder,
const lib::payload::channel_moderate::v2::Event &event,
const lib::payload::channel_moderate::v2::UnbanRequest &action);
MessagePtr makeAutomodHoldMessageHeader(
TwitchChannel *channel, const QDateTime &time,
const lib::payload::automod_message_hold::v2::Event &event);