feat(eventsub): implement timeout stacking (#6013)

This commit is contained in:
nerix
2025-03-01 23:04:30 +01:00
committed by GitHub
parent 1332743716
commit 7ad3e50a94
12 changed files with 2334 additions and 76 deletions
+1 -1
View File
@@ -31,7 +31,7 @@
- Bugfix: Fixed color input thinking blue is also red. (#5982) - Bugfix: Fixed color input thinking blue is also red. (#5982)
- Bugfix: Fixed an issue where commands would sometimes reset if Chatterino was improperly shut down. (#6011) - Bugfix: Fixed an issue where commands would sometimes reset if Chatterino was improperly shut down. (#6011)
- Dev: Subscriptions to PubSub channel points redemption topics now use no auth token, making it continue to work during PubSub shutdown. (#5947) - Dev: Subscriptions to PubSub channel points redemption topics now use no auth token, making it continue to work during PubSub shutdown. (#5947)
- Dev: Add initial experimental EventSub support. (#5837, #5895, #5897, #5904, #5910, #5903, #5915, #5916, #5930, #5935, #5932, #5943, #5952, #5953, #5968, #5973, #5974, #5980, #5981, #5985, #5990, #5992, #5993, #5996, #5995, #6000, #6001, #6002, #6003, #6005, #6007, #6010, #6008, #6012) - Dev: Add initial experimental EventSub support. (#5837, #5895, #5897, #5904, #5910, #5903, #5915, #5916, #5930, #5935, #5932, #5943, #5952, #5953, #5968, #5973, #5974, #5980, #5981, #5985, #5990, #5992, #5993, #5996, #5995, #6000, #6001, #6002, #6003, #6005, #6007, #6010, #6008, #6012, #6013)
- Dev: Remove unneeded platform specifier for toasts. (#5914) - Dev: Remove unneeded platform specifier for toasts. (#5914)
- Dev: Highlight checks now use non-capturing groups for the boundaries. (#5784) - Dev: Highlight checks now use non-capturing groups for the boundaries. (#5784)
- Dev: Removed unused PubSub whisper code. (#5898) - Dev: Removed unused PubSub whisper code. (#5898)
+30 -11
View File
@@ -630,7 +630,8 @@ MessagePtrMut MessageBuilder::makeSubgiftMessage(const QString &text,
MessageBuilder::MessageBuilder(TimeoutMessageTag, const QString &timeoutUser, MessageBuilder::MessageBuilder(TimeoutMessageTag, const QString &timeoutUser,
const QString &sourceUser, const QString &sourceUser,
const QString &systemMessageText, int times, const QString &channel,
const QString &systemMessageText, uint32_t times,
const QDateTime &time) const QDateTime &time)
: MessageBuilder() : MessageBuilder()
{ {
@@ -645,20 +646,38 @@ MessageBuilder::MessageBuilder(TimeoutMessageTag, const QString &timeoutUser,
->setLink( ->setLink(
{Link::UserInfo, timeoutUserIsFirst ? timeoutUser : sourceUser}); {Link::UserInfo, timeoutUserIsFirst ? timeoutUser : sourceUser});
auto appendUser = [&](const QString &name) {
auto pos = remainder.indexOf(name);
if (pos > 0)
{
QString start = remainder.mid(0, pos - 1);
remainder = remainder.mid(pos + name.length());
this->emplaceSystemTextAndUpdate(start, messageText);
auto *el = this->emplaceSystemTextAndUpdate(name, messageText)
->setLink({Link::UserInfo, name});
if (remainder.startsWith(' '))
{
remainder.removeFirst();
}
else
{
assert(messageText.endsWith(' '));
messageText.removeLast();
el->setTrailingSpace(false);
}
}
};
if (!sourceUser.isEmpty()) if (!sourceUser.isEmpty())
{ {
// the second username in the message // the second username in the message
const auto &targetUsername = appendUser(timeoutUserIsFirst ? sourceUser : timeoutUser);
timeoutUserIsFirst ? sourceUser : timeoutUser; }
int userPos = remainder.indexOf(targetUsername);
QString mid = remainder.mid(0, userPos - 1); if (!channel.isEmpty())
QString username = remainder.mid(userPos, targetUsername.length()); {
remainder = remainder.mid(userPos + targetUsername.length() + 1); appendUser(channel);
this->emplaceSystemTextAndUpdate(mid, messageText);
this->emplaceSystemTextAndUpdate(username, messageText)
->setLink({Link::UserInfo, username});
} }
this->emplaceSystemTextAndUpdate( this->emplaceSystemTextAndUpdate(
+3 -2
View File
@@ -107,8 +107,9 @@ public:
MessageBuilder(SystemMessageTag, const QString &text, MessageBuilder(SystemMessageTag, const QString &text,
const QTime &time = QTime::currentTime()); const QTime &time = QTime::currentTime());
MessageBuilder(TimeoutMessageTag, const QString &timeoutUser, MessageBuilder(TimeoutMessageTag, const QString &timeoutUser,
const QString &sourceUser, const QString &systemMessageText, const QString &sourceUser, const QString &channel,
int times, const QDateTime &time); const QString &systemMessageText, uint32_t times,
const QDateTime &time);
MessageBuilder(TimeoutMessageTag, const QString &username, MessageBuilder(TimeoutMessageTag, const QString &username,
const QString &durationInSeconds, bool multipleTimes, const QString &durationInSeconds, bool multipleTimes,
const QDateTime &time); const QDateTime &time);
@@ -43,13 +43,21 @@ void handleModerateMessage(
EventSubMessageBuilder builder(chan, time); EventSubMessageBuilder builder(chan, time);
builder->loginName = event.moderatorUserLogin.qt(); builder->loginName = event.moderatorUserLogin.qt();
// pretend we're pubsub
builder->flags.set(MessageFlag::PubSub);
QString text; QString text;
bool isShared = event.isFromSharedChat(); bool isShared = event.isFromSharedChat();
builder.appendUser(event.moderatorUserName, event.moderatorUserLogin, text); // XXX: We use regular links here instead of appendUser, because stacking
// will create those as well. Once everything uses mention elements,
// this can use them as well.
builder.emplaceSystemTextAndUpdate(event.moderatorUserLogin.qt(), text)
->setLink({Link::UserInfo, event.moderatorUserLogin.qt()});
builder.emplaceSystemTextAndUpdate("timed out", text); builder.emplaceSystemTextAndUpdate("timed out", text);
builder.appendUser(action.userName, action.userLogin, text); builder.emplaceSystemTextAndUpdate(action.userLogin.qt(), text)
->setLink({Link::UserInfo, action.userLogin.qt()});
builder.emplaceSystemTextAndUpdate("for", text); builder.emplaceSystemTextAndUpdate("for", text);
builder builder
@@ -60,10 +68,18 @@ void handleModerateMessage(
if (isShared) if (isShared)
{ {
builder.emplaceSystemTextAndUpdate("in", text); builder.emplaceSystemTextAndUpdate("in", text);
builder.appendUser(*event.sourceBroadcasterUserName, builder
*event.sourceBroadcasterUserLogin, text, false); .emplaceSystemTextAndUpdate(event.sourceBroadcasterUserLogin->qt(),
text)
->setLink({Link::UserInfo, event.sourceBroadcasterUserLogin->qt()})
->setTrailingSpace(false);
builder->flags.set(MessageFlag::SharedMessage);
builder->channelName = event.sourceBroadcasterUserLogin->qt();
} }
assert(text.endsWith(' '));
text.removeLast(); // trailing space
if (action.reason.view().empty()) if (action.reason.view().empty())
{ {
builder.emplaceSystemTextAndUpdate(".", text); builder.emplaceSystemTextAndUpdate(".", text);
@@ -79,9 +95,8 @@ void handleModerateMessage(
builder->timeoutUser = action.userLogin.qt(); builder->timeoutUser = action.userLogin.qt();
auto msg = builder.release(); auto msg = builder.release();
runInGuiThread([chan, msg] { runInGuiThread([chan, msg, time] {
// TODO: addOrReplaceTimeout (doesn't work with shared chat yet) chan->addOrReplaceTimeout(msg, time);
chan->addMessage(msg, MessageContext::Original);
}); });
} }
+12 -7
View File
@@ -52,11 +52,6 @@ void addOrReplaceChannelTimeout(const Buf &buffer, MessagePtr message,
break; break;
} }
if (s->flags.has(MessageFlag::EventSub))
{
continue; // TODO: implement stacking for eventsub
}
if (timeoutStackStyle == TimeoutStackStyle::DontStackBeyondUserMessage) if (timeoutStackStyle == TimeoutStackStyle::DontStackBeyondUserMessage)
{ {
if (s->loginName == message->timeoutUser && if (s->loginName == message->timeoutUser &&
@@ -67,6 +62,14 @@ void addOrReplaceChannelTimeout(const Buf &buffer, MessagePtr message,
} }
} }
bool newIsShared = message->flags.has(MessageFlag::SharedMessage);
bool oldIsShared = s->flags.has(MessageFlag::SharedMessage);
if (newIsShared != oldIsShared ||
(newIsShared && message->channelName != s->channelName))
{
continue;
}
if (s->flags.has(MessageFlag::Timeout) && if (s->flags.has(MessageFlag::Timeout) &&
s->timeoutUser == message->timeoutUser) s->timeoutUser == message->timeoutUser)
{ {
@@ -88,10 +91,12 @@ void addOrReplaceChannelTimeout(const Buf &buffer, MessagePtr message,
uint32_t count = s->count + 1; uint32_t count = s->count + 1;
MessageBuilder replacement(timeoutMessage, message->timeoutUser, MessageBuilder replacement(timeoutMessage, message->timeoutUser,
message->loginName, message->searchText, message->loginName, message->channelName,
count, message->serverReceivedTime); message->searchText, count,
message->serverReceivedTime);
replacement->timeoutUser = message->timeoutUser; replacement->timeoutUser = message->timeoutUser;
replacement->channelName = message->channelName;
replacement->count = count; replacement->count = count;
replacement->flags = message->flags; replacement->flags = message->flags;
@@ -0,0 +1,617 @@
{
"input": [
{
"__timestamp": "2025-02-22T17:54:04.523432776Z",
"action": "shared_chat_timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": {
"expires_at": "2025-02-22T18:04:04.502931622Z",
"reason": "",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": "117166826",
"source_broadcaster_user_login": "testaccount_420",
"source_broadcaster_user_name": "테스트계정420",
"timeout": null,
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
},
{
"__timestamp": "2025-02-22T17:54:05.523432776Z",
"action": "shared_chat_timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": {
"expires_at": "2025-02-22T18:04:05.502931622Z",
"reason": "",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": "117166826",
"source_broadcaster_user_login": "testaccount_420",
"source_broadcaster_user_name": "테스트계정420",
"timeout": null,
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
},
{
"__timestamp": "2025-02-22T17:54:06.523432776Z",
"action": "timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": null,
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": null,
"source_broadcaster_user_login": null,
"source_broadcaster_user_name": null,
"timeout": {
"expires_at": "2025-02-22T18:04:06.502931622Z",
"reason": "",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
},
{
"__timestamp": "2025-02-22T17:54:07.523432776Z",
"action": "shared_chat_timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": {
"expires_at": "2025-02-22T18:04:07.502931622Z",
"reason": "",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": "22484632",
"source_broadcaster_user_login": "forsen",
"source_broadcaster_user_name": "forsen",
"timeout": null,
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
}
],
"output": [
{
"badgeInfos": {
},
"badges": [
],
"channelName": "testaccount_420",
"count": 2,
"displayName": "",
"elements": [
{
"element": {
"color": "System",
"flags": "Timestamp",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"17:54"
]
},
"flags": "Timestamp",
"format": "",
"link": {
"type": "None",
"value": ""
},
"time": "17:54:05",
"tooltip": "",
"trailingSpace": true,
"type": "TimestampElement"
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "nerixyz"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"nerixyz"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"timed",
"out"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "twitchdev"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"twitchdev"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"for",
"10m",
"in"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "testaccount_420"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": false,
"type": "TextElement",
"words": [
"testaccount_420"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
".",
"(2",
"times)"
]
}
],
"flags": "System|Timeout|PubSub|SharedMessage|EventSub",
"id": "",
"localizedName": "",
"loginName": "",
"messageText": "nerixyz timed out twitchdev for 10m in testaccount_420. (2 times) ",
"searchText": "nerixyz timed out twitchdev for 10m in testaccount_420. (2 times) ",
"serverReceivedTime": "2025-02-22T17:54:05Z",
"timeoutUser": "twitchdev",
"userID": "",
"usernameColor": "#ff000000"
},
{
"badgeInfos": {
},
"badges": [
],
"channelName": "",
"count": 1,
"displayName": "",
"elements": [
{
"element": {
"color": "System",
"flags": "Timestamp",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"17:54"
]
},
"flags": "Timestamp",
"format": "",
"link": {
"type": "None",
"value": ""
},
"time": "17:54:06",
"tooltip": "",
"trailingSpace": true,
"type": "TimestampElement"
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "nerixyz"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"nerixyz"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"timed",
"out"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "twitchdev"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"twitchdev"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"for"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": false,
"type": "TextElement",
"words": [
"10m"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"."
]
}
],
"flags": "System|Timeout|PubSub|EventSub",
"id": "",
"localizedName": "",
"loginName": "nerixyz",
"messageText": "nerixyz timed out twitchdev for 10m. ",
"searchText": "nerixyz timed out twitchdev for 10m. ",
"serverReceivedTime": "2025-02-22T17:54:06Z",
"timeoutUser": "twitchdev",
"userID": "",
"usernameColor": "#ff000000"
},
{
"badgeInfos": {
},
"badges": [
],
"channelName": "forsen",
"count": 1,
"displayName": "",
"elements": [
{
"element": {
"color": "System",
"flags": "Timestamp",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"17:54"
]
},
"flags": "Timestamp",
"format": "",
"link": {
"type": "None",
"value": ""
},
"time": "17:54:07",
"tooltip": "",
"trailingSpace": true,
"type": "TimestampElement"
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "nerixyz"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"nerixyz"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"timed",
"out"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "twitchdev"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"twitchdev"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"for"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"10m"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"in"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "forsen"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": false,
"type": "TextElement",
"words": [
"forsen"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"."
]
}
],
"flags": "System|Timeout|PubSub|SharedMessage|EventSub",
"id": "",
"localizedName": "",
"loginName": "nerixyz",
"messageText": "nerixyz timed out twitchdev for 10m in forsen. ",
"searchText": "nerixyz timed out twitchdev for 10m in forsen. ",
"serverReceivedTime": "2025-02-22T17:54:07Z",
"timeoutUser": "twitchdev",
"userID": "",
"usernameColor": "#ff000000"
}
]
}
@@ -0,0 +1,438 @@
{
"input": [
{
"__timestamp": "2025-02-22T17:54:04.523432776Z",
"action": "shared_chat_timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": {
"expires_at": "2025-02-22T18:04:04.502931622Z",
"reason": "",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": "117166826",
"source_broadcaster_user_login": "testaccount_420",
"source_broadcaster_user_name": "테스트계정420",
"timeout": null,
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
},
{
"__timestamp": "2025-02-22T17:54:05.523432776Z",
"action": "shared_chat_timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": {
"expires_at": "2025-02-22T18:04:05.502931622Z",
"reason": "",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": "117166826",
"source_broadcaster_user_login": "testaccount_420",
"source_broadcaster_user_name": "테스트계정420",
"timeout": null,
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
},
{
"__timestamp": "2025-02-22T17:54:06.523432776Z",
"action": "shared_chat_timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": {
"expires_at": "2025-02-22T18:04:06.502931622Z",
"reason": "",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": "22484632",
"source_broadcaster_user_login": "forsen",
"source_broadcaster_user_name": "forsen",
"timeout": null,
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
}
],
"output": [
{
"badgeInfos": {
},
"badges": [
],
"channelName": "testaccount_420",
"count": 2,
"displayName": "",
"elements": [
{
"element": {
"color": "System",
"flags": "Timestamp",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"17:54"
]
},
"flags": "Timestamp",
"format": "",
"link": {
"type": "None",
"value": ""
},
"time": "17:54:05",
"tooltip": "",
"trailingSpace": true,
"type": "TimestampElement"
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "nerixyz"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"nerixyz"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"timed",
"out"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "twitchdev"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"twitchdev"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"for",
"10m",
"in"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "testaccount_420"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": false,
"type": "TextElement",
"words": [
"testaccount_420"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
".",
"(2",
"times)"
]
}
],
"flags": "System|Timeout|PubSub|SharedMessage|EventSub",
"id": "",
"localizedName": "",
"loginName": "",
"messageText": "nerixyz timed out twitchdev for 10m in testaccount_420. (2 times) ",
"searchText": "nerixyz timed out twitchdev for 10m in testaccount_420. (2 times) ",
"serverReceivedTime": "2025-02-22T17:54:05Z",
"timeoutUser": "twitchdev",
"userID": "",
"usernameColor": "#ff000000"
},
{
"badgeInfos": {
},
"badges": [
],
"channelName": "forsen",
"count": 1,
"displayName": "",
"elements": [
{
"element": {
"color": "System",
"flags": "Timestamp",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"17:54"
]
},
"flags": "Timestamp",
"format": "",
"link": {
"type": "None",
"value": ""
},
"time": "17:54:06",
"tooltip": "",
"trailingSpace": true,
"type": "TimestampElement"
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "nerixyz"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"nerixyz"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"timed",
"out"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "twitchdev"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"twitchdev"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"for"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"10m"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"in"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "forsen"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": false,
"type": "TextElement",
"words": [
"forsen"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"."
]
}
],
"flags": "System|Timeout|PubSub|SharedMessage|EventSub",
"id": "",
"localizedName": "",
"loginName": "nerixyz",
"messageText": "nerixyz timed out twitchdev for 10m in forsen. ",
"searchText": "nerixyz timed out twitchdev for 10m in forsen. ",
"serverReceivedTime": "2025-02-22T17:54:06Z",
"timeoutUser": "twitchdev",
"userID": "",
"usernameColor": "#ff000000"
}
]
}
@@ -0,0 +1,408 @@
{
"input": [
{
"__timestamp": "2025-02-22T17:54:04.523432776Z",
"action": "shared_chat_timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": {
"expires_at": "2025-02-22T18:04:04.502931622Z",
"reason": "",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": "117166826",
"source_broadcaster_user_login": "testaccount_420",
"source_broadcaster_user_name": "테스트계정420",
"timeout": null,
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
},
{
"__timestamp": "2025-02-22T17:54:05.523432776Z",
"action": "shared_chat_timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": {
"expires_at": "2025-02-22T18:04:05.502931622Z",
"reason": "",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": "117166826",
"source_broadcaster_user_login": "testaccount_420",
"source_broadcaster_user_name": "테스트계정420",
"timeout": null,
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
},
{
"__timestamp": "2025-02-22T17:54:06.523432776Z",
"action": "shared_chat_timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": {
"expires_at": "2025-02-22T18:04:06.502931622Z",
"reason": "",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": null,
"source_broadcaster_user_login": null,
"source_broadcaster_user_name": null,
"timeout": null,
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
}
],
"output": [
{
"badgeInfos": {
},
"badges": [
],
"channelName": "testaccount_420",
"count": 2,
"displayName": "",
"elements": [
{
"element": {
"color": "System",
"flags": "Timestamp",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"17:54"
]
},
"flags": "Timestamp",
"format": "",
"link": {
"type": "None",
"value": ""
},
"time": "17:54:05",
"tooltip": "",
"trailingSpace": true,
"type": "TimestampElement"
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "nerixyz"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"nerixyz"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"timed",
"out"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "twitchdev"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"twitchdev"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"for",
"10m",
"in"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "testaccount_420"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": false,
"type": "TextElement",
"words": [
"testaccount_420"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
".",
"(2",
"times)"
]
}
],
"flags": "System|Timeout|PubSub|SharedMessage|EventSub",
"id": "",
"localizedName": "",
"loginName": "",
"messageText": "nerixyz timed out twitchdev for 10m in testaccount_420. (2 times) ",
"searchText": "nerixyz timed out twitchdev for 10m in testaccount_420. (2 times) ",
"serverReceivedTime": "2025-02-22T17:54:05Z",
"timeoutUser": "twitchdev",
"userID": "",
"usernameColor": "#ff000000"
},
{
"badgeInfos": {
},
"badges": [
],
"channelName": "",
"count": 1,
"displayName": "",
"elements": [
{
"element": {
"color": "System",
"flags": "Timestamp",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"17:54"
]
},
"flags": "Timestamp",
"format": "",
"link": {
"type": "None",
"value": ""
},
"time": "17:54:06",
"tooltip": "",
"trailingSpace": true,
"type": "TimestampElement"
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "nerixyz"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"nerixyz"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"timed",
"out"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "twitchdev"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"twitchdev"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"for"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": false,
"type": "TextElement",
"words": [
"10m"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"."
]
}
],
"flags": "System|Timeout|PubSub|EventSub",
"id": "",
"localizedName": "",
"loginName": "nerixyz",
"messageText": "nerixyz timed out twitchdev for 10m. ",
"searchText": "nerixyz timed out twitchdev for 10m. ",
"serverReceivedTime": "2025-02-22T17:54:06Z",
"timeoutUser": "twitchdev",
"userID": "",
"usernameColor": "#ff000000"
}
]
}
@@ -45,7 +45,7 @@
}, },
"badges": [ "badges": [
], ],
"channelName": "", "channelName": "testaccount_420",
"count": 1, "count": 1,
"displayName": "", "displayName": "",
"elements": [ "elements": [
@@ -77,19 +77,16 @@
"type": "TimestampElement" "type": "TimestampElement"
}, },
{ {
"color": "Text", "color": "System",
"fallbackColor": "System", "flags": "Text",
"flags": "Text|Mention",
"link": { "link": {
"type": "None", "type": "UserInfo",
"value": "" "value": "nerixyz"
}, },
"style": "ChatMedium", "style": "ChatMedium",
"tooltip": "", "tooltip": "",
"trailingSpace": true, "trailingSpace": true,
"type": "MentionElement", "type": "TextElement",
"userColor": "System",
"userLoginName": "nerixyz",
"words": [ "words": [
"nerixyz" "nerixyz"
] ]
@@ -111,21 +108,18 @@
] ]
}, },
{ {
"color": "Text", "color": "System",
"fallbackColor": "System", "flags": "Text",
"flags": "Text|Mention",
"link": { "link": {
"type": "None", "type": "UserInfo",
"value": "" "value": "twitchdev"
}, },
"style": "ChatMedium", "style": "ChatMedium",
"tooltip": "", "tooltip": "",
"trailingSpace": true, "trailingSpace": true,
"type": "MentionElement", "type": "TextElement",
"userColor": "System",
"userLoginName": "twitchdev",
"words": [ "words": [
"TwitchDev" "twitchdev"
] ]
}, },
{ {
@@ -174,21 +168,18 @@
] ]
}, },
{ {
"color": "Text", "color": "System",
"fallbackColor": "System", "flags": "Text",
"flags": "Text|Mention",
"link": { "link": {
"type": "None", "type": "UserInfo",
"value": "" "value": "testaccount_420"
}, },
"style": "ChatMedium", "style": "ChatMedium",
"tooltip": "", "tooltip": "",
"trailingSpace": false, "trailingSpace": false,
"type": "MentionElement", "type": "TextElement",
"userColor": "System",
"userLoginName": "testaccount_420",
"words": [ "words": [
"테스트계정420" "testaccount_420"
] ]
}, },
{ {
@@ -207,7 +198,7 @@
] ]
} }
], ],
"flags": "System|Timeout|EventSub", "flags": "System|Timeout|PubSub|SharedMessage|EventSub",
"id": "", "id": "",
"localizedName": "", "localizedName": "",
"loginName": "nerixyz", "loginName": "nerixyz",
@@ -0,0 +1,393 @@
{
"input": [
{
"__timestamp": "2025-02-22T17:53:49.800959069Z",
"action": "timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": null,
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": null,
"source_broadcaster_user_login": null,
"source_broadcaster_user_name": null,
"timeout": {
"expires_at": "2025-02-22T17:53:50.782129948Z",
"reason": "pajlada",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
},
{
"__timestamp": "2025-02-22T17:53:50.800959069Z",
"action": "timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": null,
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": null,
"source_broadcaster_user_login": null,
"source_broadcaster_user_name": null,
"timeout": {
"expires_at": "2025-02-22T17:53:51.782129948Z",
"reason": "pajlada",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
},
{
"__timestamp": "2025-02-22T17:54:50.800959069Z",
"action": "timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": null,
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": null,
"source_broadcaster_user_login": null,
"source_broadcaster_user_name": null,
"timeout": {
"expires_at": "2025-02-22T17:54:51.782129948Z",
"reason": "pajlada",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
}
],
"output": [
{
"badgeInfos": {
},
"badges": [
],
"channelName": "",
"count": 2,
"displayName": "",
"elements": [
{
"element": {
"color": "System",
"flags": "Timestamp",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"17:53"
]
},
"flags": "Timestamp",
"format": "",
"link": {
"type": "None",
"value": ""
},
"time": "17:53:50",
"tooltip": "",
"trailingSpace": true,
"type": "TimestampElement"
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "nerixyz"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"nerixyz"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"timed",
"out"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "twitchdev"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"twitchdev"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"for",
"1s:",
"pajlada",
"(2",
"times)"
]
}
],
"flags": "System|Timeout|PubSub|EventSub",
"id": "",
"localizedName": "",
"loginName": "",
"messageText": "nerixyz timed out twitchdev for 1s: pajlada (2 times) ",
"searchText": "nerixyz timed out twitchdev for 1s: pajlada (2 times) ",
"serverReceivedTime": "2025-02-22T17:53:50Z",
"timeoutUser": "twitchdev",
"userID": "",
"usernameColor": "#ff000000"
},
{
"badgeInfos": {
},
"badges": [
],
"channelName": "",
"count": 1,
"displayName": "",
"elements": [
{
"element": {
"color": "System",
"flags": "Timestamp",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"17:54"
]
},
"flags": "Timestamp",
"format": "",
"link": {
"type": "None",
"value": ""
},
"time": "17:54:50",
"tooltip": "",
"trailingSpace": true,
"type": "TimestampElement"
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "nerixyz"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"nerixyz"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"timed",
"out"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "twitchdev"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"twitchdev"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"for"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": false,
"type": "TextElement",
"words": [
"1s"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
":"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"pajlada"
]
}
],
"flags": "System|Timeout|PubSub|EventSub",
"id": "",
"localizedName": "",
"loginName": "nerixyz",
"messageText": "nerixyz timed out twitchdev for 1s: pajlada ",
"searchText": "nerixyz timed out twitchdev for 1s: pajlada ",
"serverReceivedTime": "2025-02-22T17:54:50Z",
"timeoutUser": "twitchdev",
"userID": "",
"usernameColor": "#ff000000"
}
]
}
@@ -0,0 +1,377 @@
{
"input": [
{
"__timestamp": "2025-02-22T17:53:49.800959069Z",
"action": "timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": null,
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": null,
"source_broadcaster_user_login": null,
"source_broadcaster_user_name": null,
"timeout": {
"expires_at": "2025-02-22T17:53:50.782129948Z",
"reason": "",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
},
{
"__timestamp": "2025-02-22T17:53:50.800959069Z",
"action": "timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": null,
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": null,
"source_broadcaster_user_login": null,
"source_broadcaster_user_name": null,
"timeout": {
"expires_at": "2025-02-22T17:53:51.782129948Z",
"reason": "",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
},
{
"__timestamp": "2025-02-22T17:54:50.800959069Z",
"action": "timeout",
"automod_terms": null,
"ban": null,
"broadcaster_user_id": "11148817",
"broadcaster_user_login": "pajlada",
"broadcaster_user_name": "pajlada",
"delete": null,
"followers": null,
"mod": null,
"moderator_user_id": "129546453",
"moderator_user_login": "nerixyz",
"moderator_user_name": "nerixyz",
"raid": null,
"shared_chat_ban": null,
"shared_chat_delete": null,
"shared_chat_timeout": null,
"shared_chat_unban": null,
"shared_chat_untimeout": null,
"slow": null,
"source_broadcaster_user_id": null,
"source_broadcaster_user_login": null,
"source_broadcaster_user_name": null,
"timeout": {
"expires_at": "2025-02-22T17:54:51.782129948Z",
"reason": "",
"user_id": "141981764",
"user_login": "twitchdev",
"user_name": "TwitchDev"
},
"unban": null,
"unban_request": null,
"unmod": null,
"unraid": null,
"untimeout": null,
"unvip": null,
"vip": null,
"warn": null
}
],
"output": [
{
"badgeInfos": {
},
"badges": [
],
"channelName": "",
"count": 2,
"displayName": "",
"elements": [
{
"element": {
"color": "System",
"flags": "Timestamp",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"17:53"
]
},
"flags": "Timestamp",
"format": "",
"link": {
"type": "None",
"value": ""
},
"time": "17:53:50",
"tooltip": "",
"trailingSpace": true,
"type": "TimestampElement"
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "nerixyz"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"nerixyz"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"timed",
"out"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "twitchdev"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"twitchdev"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"for",
"1s.",
"(2",
"times)"
]
}
],
"flags": "System|Timeout|PubSub|EventSub",
"id": "",
"localizedName": "",
"loginName": "",
"messageText": "nerixyz timed out twitchdev for 1s. (2 times) ",
"searchText": "nerixyz timed out twitchdev for 1s. (2 times) ",
"serverReceivedTime": "2025-02-22T17:53:50Z",
"timeoutUser": "twitchdev",
"userID": "",
"usernameColor": "#ff000000"
},
{
"badgeInfos": {
},
"badges": [
],
"channelName": "",
"count": 1,
"displayName": "",
"elements": [
{
"element": {
"color": "System",
"flags": "Timestamp",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"17:54"
]
},
"flags": "Timestamp",
"format": "",
"link": {
"type": "None",
"value": ""
},
"time": "17:54:50",
"tooltip": "",
"trailingSpace": true,
"type": "TimestampElement"
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "nerixyz"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"nerixyz"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"timed",
"out"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "UserInfo",
"value": "twitchdev"
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"twitchdev"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"for"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": false,
"type": "TextElement",
"words": [
"1s"
]
},
{
"color": "System",
"flags": "Text",
"link": {
"type": "None",
"value": ""
},
"style": "ChatMedium",
"tooltip": "",
"trailingSpace": true,
"type": "TextElement",
"words": [
"."
]
}
],
"flags": "System|Timeout|PubSub|EventSub",
"id": "",
"localizedName": "",
"loginName": "nerixyz",
"messageText": "nerixyz timed out twitchdev for 1s. ",
"searchText": "nerixyz timed out twitchdev for 1s. ",
"serverReceivedTime": "2025-02-22T17:54:50Z",
"timeoutUser": "twitchdev",
"userID": "",
"usernameColor": "#ff000000"
}
]
}
@@ -77,19 +77,16 @@
"type": "TimestampElement" "type": "TimestampElement"
}, },
{ {
"color": "Text", "color": "System",
"fallbackColor": "System", "flags": "Text",
"flags": "Text|Mention",
"link": { "link": {
"type": "None", "type": "UserInfo",
"value": "" "value": "nerixyz"
}, },
"style": "ChatMedium", "style": "ChatMedium",
"tooltip": "", "tooltip": "",
"trailingSpace": true, "trailingSpace": true,
"type": "MentionElement", "type": "TextElement",
"userColor": "System",
"userLoginName": "nerixyz",
"words": [ "words": [
"nerixyz" "nerixyz"
] ]
@@ -111,21 +108,18 @@
] ]
}, },
{ {
"color": "Text", "color": "System",
"fallbackColor": "System", "flags": "Text",
"flags": "Text|Mention",
"link": { "link": {
"type": "None", "type": "UserInfo",
"value": "" "value": "twitchdev"
}, },
"style": "ChatMedium", "style": "ChatMedium",
"tooltip": "", "tooltip": "",
"trailingSpace": true, "trailingSpace": true,
"type": "MentionElement", "type": "TextElement",
"userColor": "System",
"userLoginName": "twitchdev",
"words": [ "words": [
"TwitchDev" "twitchdev"
] ]
}, },
{ {
@@ -189,12 +183,12 @@
] ]
} }
], ],
"flags": "System|Timeout|EventSub", "flags": "System|Timeout|PubSub|EventSub",
"id": "", "id": "",
"localizedName": "", "localizedName": "",
"loginName": "nerixyz", "loginName": "nerixyz",
"messageText": "nerixyz timed out twitchdev for 1s : test ", "messageText": "nerixyz timed out twitchdev for 1s: test ",
"searchText": "nerixyz timed out twitchdev for 1s : test ", "searchText": "nerixyz timed out twitchdev for 1s: test ",
"serverReceivedTime": "2025-02-22T17:53:49Z", "serverReceivedTime": "2025-02-22T17:53:49Z",
"timeoutUser": "twitchdev", "timeoutUser": "twitchdev",
"userID": "", "userID": "",