RAT 5 Events / Guide and Reference
Event System
How RAT 5 turns game-server, Discord, backup, and runtime activity into ordered RATScript automation.
Start here
You do not need to understand every event before creating useful automation. An event type is simply something RAT notices, such as a player joining or a backup finishing. An event definition tells RAT what to do when that happens.
1. Pick what happenedChoose an event type whose name matches the activity you care about.
2. Start from a templateTemplates provide safe examples using the variables available for that event.
3. Preview before enablingPreview shows what the script would do without sending real messages or commands.
Good first eventTry player.new_joined with its welcome template. Change only the message, validate it, preview it, and enable it when the result looks right.
1. How the event system works
RAT 5 receives events from the 7 Days to Die telnet stream, the Discord gateway, backup operations, and the managed game-server runtime. Each source is normalized to a catalog key, enriched with current player and server data where possible, and captured as a snapshot for preview and diagnostics.
- A source emits activity, such as a chat line, player connection, Discord reaction, backup result, or server lifecycle change.
- RAT classifies the activity with a catalog key such as
chat.global_message, backup.completed, or server.ready.
- RAT supplies the event variables in this catalog plus the runtime variables in the scripting reference.
- Every enabled definition for that key is validated and executed in configured order.
- RAT stores execution status, output and state summaries, errors, and the most recent successful result.
One trigger, many definitionsMultiple enabled definitions can subscribe to the same event type. Each definition has its own persistent global.* state.
2. Definitions, sources, and ordering
An event definition contains a name, description, event type key, rat5.v2 script, enabled state, order, revision, and source. User definitions are editable. RAT-managed definitions protect their name, type, description, and script; only enabled state and order may be changed.
Definitions execute in ascending order. Equal values are resolved deterministically by creation time and definition ID. An invalid or failed definition does not prevent later definitions from receiving the same event.
| Parser source | Meaning |
telnet.* | Parsed from 7 Days to Die telnet output. |
discord.* | Received from the configured Discord guild and channel mappings. |
internal.* | Emitted directly by a RAT subsystem rather than parsed from text. |
Ordering is not shared memoryOrdering controls externally visible side effects, but one definition cannot read another definition's global.* values.
3. Creating, validating, and transferring events
Select an event typeThe reference panel limits tokens and templates to the selected trigger.
Write or adapt RATScriptUse event tokens, runtime variables, locals, persistent globals, reusable functions, and built-ins.
ValidateResolve line-and-column diagnostics before saving or enabling the definition.
Preview with a snapshotInspect outputs, branch decisions, locals, globals, simulated mutations, and structured runtime errors. Preview does not perform live side effects.
Save, order, and enableUse the base revision returned by RAT so concurrent edits are detected.
Export can package selected definitions and their reusable-function dependencies. Import is a two-step preview/apply workflow: review conflicts and warnings first, select items, acknowledge warnings when required, and then apply. Preview sessions can be retrieved or discarded before application.
The Developer Workbench in RAT 5 Client can turn a captured raw line into a catalog event type, variables, and an optional managed definition. If an action is unavailable, ask the RAT 5 administrator to check your Events permissions.
4. Managed RAT events
RAT ships managed definitions for selected internal events. They are disabled by default so administrators can review their actions before enabling them. Their source is refreshed by RAT and cannot be deleted.
| Managed key | Name | Event type | Default | Purpose |
|---|
rat.chat.server_message.default_logger | Server announcement logger | chat.server_message | Disabled | Logs server-originated chat announcements from telnet into the RAT event stream. |
rat.backup.started | Backup Started | backup.started | Disabled | Runs when a backup operation starts. |
rat.backup.completed | Backup Completed | backup.completed | Disabled | Runs when a backup operation completes successfully. |
rat.backup.failed | Backup Failed | backup.failed | Disabled | Runs when a backup operation fails. |
rat.server.ready | Server Ready | server.ready | Disabled | Runs when the game server is ready to accept player connections. |
rat.server.restarting | Server Restart | server.restarting | Disabled | Runs when the game server begins restarting. |
rat.server.started | Server Start | server.started | Disabled | Runs when the game server process starts. |
rat.server.stopped | Server Stop | server.stopped | Disabled | Runs when the game server process stops. |
rat.player.new_joined | New Player Joined | player.new_joined | Disabled | Runs when a player joins and RAT creates their player record for the first time. |
Chat Global Message
chat.global_message
A player sent a global chat message that RAT parsed from telnet output.
Category: chatStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.chat.global_message.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | chat.global_message | Required |
$event_key | string | Catalog event key for the current event. | chat.global_message | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$player.name | string | Display name of the player who sent the message. | Trekkan | Required |
$chat_content | string | Chat content that the player sent. | Hello world | Required |
$channel_name | string | Resolved chat channel when available. | Global | Optional |
$platform_id | string | Source platform identifier when provided by telnet. | Steam_76561197970441157 | Optional |
$entity_id | string | 7DTD entity id when provided by telnet. | 171 | Optional |
$player- $player.id nullable
- $player.name nullable
- $player.platform_id nullable
- $player.cross_platform_id nullable
- $player.steam_id nullable
- $player.eos_id nullable
- $player.xbl_id nullable
- $player.platform_family nullable
- $player.platform_user_id nullable
- $player.cross_platform_family nullable
- $player.cross_platform_user_id nullable
- $player.entity_id nullable
- $player.online nullable
- $player.last_seen_at nullable
- $player.ip_address nullable
- $player.level nullable
- $player.health nullable
- $player.stamina nullable
- $player.score nullable
- $player.ping nullable
- $player.deaths nullable
- $player.zombie_kills nullable
- $player.player_kills nullable
- $player.total_play_time_seconds nullable
- $player.credits nullable
- $player.ban_active nullable
- $player.ban_reason nullable
- $player.ban_until nullable
- $player.group nullable
- $player.group.id nullable
- $player.group.name nullable
- $player.group.max_teleport_destinations nullable
- $player.group.teleport_cooldown_seconds nullable
- $player.position nullable
- $player.position.x nullable
- $player.position.y nullable
- $player.position.z nullable
| object Nullable | Resolved RAT player object for this event. Use child properties like $player.name or $player.position.x. When the event provides a player name, $player.name is populated even if RAT cannot match a unique stored player record; richer profile fields are filled when RAT resolves the player. $player.id $player.name $player.platform_id $player.cross_platform_id $player.steam_id $player.eos_id $player.xbl_id $player.platform_family $player.platform_user_id $player.cross_platform_family $player.cross_platform_user_id $player.entity_id $player.online $player.last_seen_at $player.ip_address $player.level $player.health $player.stamina $player.score $player.ping $player.deaths $player.zombie_kills $player.player_kills $player.total_play_time_seconds $player.credits $player.ban_active $player.ban_reason $player.ban_until $player.group.id $player.group.name $player.group.max_teleport_destinations $player.group.teleport_cooldown_seconds $player.position.x $player.position.y $player.position.z rat5.v2 only | — | Optional |
$0 | string | Full normalized chat message, matching the same normalized text exposed by $chat_content. rat5.v2 only | Hello, how are you? | Required |
$1 | string | Whitespace-split chat tokens continue numerically across the entire message starting at $1. $1 => first split token $2 => second split token $3 => third split token continues as $4, $5, and beyond for as many tokens as the chat message contains rat5.v2 only | Hello, | Optional |
$N- | string | Joined chat tokens 1 through N. Example: with "Hello, how are you?", $3- resolves to "Hello, how are". $3- => first three split tokens joined with single spaces $0- is invalid rat5.v2 only | Hello, how are | Optional |
$N+ | string | Joined chat tokens N through the end. Example: with "Hello, how are you?", $3+ resolves to "are you?". $3+ => token 3 through the end joined with single spaces $0+ is invalid rat5.v2 only | are you? | Optional |
Templates
Help command logger
Tracks the last player who used !help and logs the normalized message.
# Capture simple help commands
set local.message = trim($chat_content)
if starts_with(lower(local.message), "!help") then
set global.last_help_player = $player.name
set global.last_help_at = $current_datetime
log(format("Help requested by {0}: {1}", $player.name, local.message))
else
debug(format("Ignored chat from {0}", $player.name))
end
Quiet mode filter
Suppresses most chat when quiet mode is enabled in shared state.
# Use global.quiet_mode to suppress normal chat
set local.message = trim($chat_content)
if global.quiet_mode == true and not starts_with(local.message, "!") then
debug(format("Suppressed chat from {0}", $player.name))
else
log(format("{0}: {1}", $player.name, local.message))
end
Back to event catalogChat Server Message
chat.server_message
A server-originated chat line that RAT parsed from telnet output.
Category: chatStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.chat.server_message.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | chat.server_message | Required |
$event_key | string | Catalog event key for the current event. | chat.server_message | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$speaker_name | string | Display name of the telnet chat speaker. | Server | Required |
$chat_content | string | Chat content emitted by the server. | Blood moon starts in 10 minutes. | Required |
$channel_name | string | Resolved chat channel when available. | Global | Optional |
$0 | string | Full normalized chat message, matching the same normalized text exposed by $chat_content. rat5.v2 only | Blood moon starts in 10 minutes. | Required |
$1 | string | Whitespace-split chat tokens continue numerically across the entire message starting at $1. $1 => first split token $2 => second split token $3 => third split token continues as $4, $5, and beyond for as many tokens as the chat message contains rat5.v2 only | Blood | Optional |
$N- | string | Joined chat tokens 1 through N. Example: with "Hello, how are you?", $3- resolves to "Hello, how are". $3- => first three split tokens joined with single spaces $0- is invalid rat5.v2 only | Blood moon starts | Optional |
$N+ | string | Joined chat tokens N through the end. Example: with "Hello, how are you?", $3+ resolves to "are you?". $3+ => token 3 through the end joined with single spaces $0+ is invalid rat5.v2 only | starts in 10 minutes. | Optional |
Templates
Announcement tracker
Stores the latest server announcement in shared state.
set global.last_server_announcement = $chat_content
set global.last_server_announcement_at = $current_datetime
log(format("Server said: {0}", $chat_content))
Back to event catalogDiscord Message
discord.message_received
A Discord message received from a configured channel mapping.
Category: discordStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: Discord gateway via discord.message_received.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | discord.message_received | Required |
$event_key | string | Catalog event key for the current event. | discord.message_received | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$discord_guild_id | string | Discord guild ID that produced the message. | 123456789012345678 | Required |
$discord_channel_id | string | Discord channel ID that produced the message. | 234567890123456789 | Required |
$discord_channel_key | string | Configured RAT channel mapping key for the Discord channel. | general | Required |
$discord_channel_name | string | Resolved Discord channel name when available. | general-chat | Optional |
$discord_message_id | string | Discord message identifier. | 345678901234567890 | Required |
$discord_message_timestamp | string | Discord message timestamp in UTC RFC3339 format. | 2026-06-20T16:00:01Z | Required |
$discord_author_id | string | Discord author identifier. | 456789012345678901 | Required |
$discord_author_username | string | Discord author username. | trekkan | Required |
$discord_author_global_name | string | Discord author global display name when available. | Trekkan | Optional |
$discord_author_name | string | Discord author display name. | Trekkan | Required |
$discord_author_is_bot | string | True when the Discord author is a bot account. | false | Required |
$discord_mentions_everyone | string | True when the Discord message mentions everyone. | false | Required |
$discord_mention_count | string | Number of user mentions included in the Discord message. | 1 | Required |
$discord_mentioned_user_ids | string | Comma-separated Discord user IDs mentioned by the message. | 456789012345678901 | Optional |
$discord_mentioned_role_ids | string | Comma-separated Discord role IDs mentioned by the message. | 567890123456789012 | Optional |
$discord_role_mention_count | string | Number of role mentions included in the Discord message. | 1 | Required |
$discord_attachment_count | string | Number of attachments included in the Discord message. | 0 | Required |
$discord_embed_count | string | Number of embeds included in the Discord message. | 0 | Required |
$discord_reaction_count | string | Number of reaction summaries included in the Discord message. | 0 | Required |
$discord_message_type | string | Numeric Discord message type. | 0 | Required |
$discord_message_edited_at | string | UTC RFC3339 timestamp of the last edit when available. | 2026-06-20T16:01:00Z | Optional |
$discord_message_pinned | string | True when the Discord message is pinned. | false | Required |
$discord_message_tts | string | True when the Discord message is text-to-speech. | false | Required |
$discord_reply_message_id | string | Referenced Discord message ID when this message is a reply. | 345678901234567890 | Optional |
$discord_reply_channel_id | string | Referenced Discord channel ID when this message is a reply. | 234567890123456789 | Optional |
$discord_reply_guild_id | string | Referenced Discord guild ID when this message is a reply. | 123456789012345678 | Optional |
$discord_reply_author_id | string | Referenced Discord author ID when available. | 456789012345678901 | Optional |
$discord_attachment_name | string | Filename of the first attachment when available. | server.log | Optional |
$discord_attachment_type | string | Content type of the first attachment when available. | text/plain | Optional |
$discord_attachment_url | string | Discord URL of the first attachment when available. | https://cdn.discordapp.com/example | Optional |
$discord_attachment_size | string | Size in bytes of the first attachment. | 1024 | Required |
$discord_embed_title | string | Title of the first embed when available. | Server Alert | Optional |
$discord_embed_description | string | Description of the first embed when available. | Horde night started. | Optional |
$discord_embed_url | string | URL of the first embed when available. | https://example.com | Optional |
$discord_embed_field_count | string | Number of fields in the first embed. | 2 | Required |
$discord_webhook_id | string | Discord webhook identifier when the message was created by a webhook. | 567890123456789012 | Optional |
$discord_content_raw | string | Raw Discord message content before RAT normalizes mentions or truncates long text. | Hello <@456789012345678901> | Required |
$chat_content | string | Normalized Discord message content. | Hello from Discord | Required |
$discord- $discord.guild_id nullable
- $discord.channel_id nullable
- $discord.channel_key nullable
- $discord.channel_name nullable
- $discord.message_id nullable
- $discord.content nullable
- $discord.content_raw nullable
- $discord.message_type nullable
- $discord.edited_at nullable
- $discord.pinned nullable
- $discord.tts nullable
- $discord.mentions_everyone nullable
- $discord.mentioned_user_ids nullable
- $discord.mentioned_role_ids nullable
- $discord.attachment_count nullable
- $discord.embed_count nullable
- $discord.reaction_count nullable
- $discord.author nullable
- $discord.author.id nullable
- $discord.author.username nullable
- $discord.author.global_name nullable
- $discord.author.is_bot nullable
- $discord.reply nullable
- $discord.reply.message_id nullable
- $discord.reply.channel_id nullable
- $discord.reply.guild_id nullable
- $discord.reply.author_id nullable
- $discord.attachments nullable
- $discord.attachments.item_01 nullable
- $discord.attachments.item_01.name nullable
- $discord.attachments.item_01.content_type nullable
- $discord.attachments.item_01.url nullable
- $discord.attachments.item_01.size nullable
- $discord.attachments.item_01.width nullable
- $discord.attachments.item_01.height nullable
- $discord.attachments.item_02 nullable
- $discord.attachments.item_02.name nullable
- $discord.attachments.item_02.content_type nullable
- $discord.attachments.item_02.url nullable
- $discord.attachments.item_02.size nullable
- $discord.attachments.item_02.width nullable
- $discord.attachments.item_02.height nullable
- $discord.attachments.item_03 nullable
- $discord.attachments.item_03.name nullable
- $discord.attachments.item_03.content_type nullable
- $discord.attachments.item_03.url nullable
- $discord.attachments.item_03.size nullable
- $discord.attachments.item_03.width nullable
- $discord.attachments.item_03.height nullable
- $discord.attachments.item_04 nullable
- $discord.attachments.item_04.name nullable
- $discord.attachments.item_04.content_type nullable
- $discord.attachments.item_04.url nullable
- $discord.attachments.item_04.size nullable
- $discord.attachments.item_04.width nullable
- $discord.attachments.item_04.height nullable
- $discord.attachments.item_05 nullable
- $discord.attachments.item_05.name nullable
- $discord.attachments.item_05.content_type nullable
- $discord.attachments.item_05.url nullable
- $discord.attachments.item_05.size nullable
- $discord.attachments.item_05.width nullable
- $discord.attachments.item_05.height nullable
- $discord.attachments.item_06 nullable
- $discord.attachments.item_06.name nullable
- $discord.attachments.item_06.content_type nullable
- $discord.attachments.item_06.url nullable
- $discord.attachments.item_06.size nullable
- $discord.attachments.item_06.width nullable
- $discord.attachments.item_06.height nullable
- $discord.attachments.item_07 nullable
- $discord.attachments.item_07.name nullable
- $discord.attachments.item_07.content_type nullable
- $discord.attachments.item_07.url nullable
- $discord.attachments.item_07.size nullable
- $discord.attachments.item_07.width nullable
- $discord.attachments.item_07.height nullable
- $discord.attachments.item_08 nullable
- $discord.attachments.item_08.name nullable
- $discord.attachments.item_08.content_type nullable
- $discord.attachments.item_08.url nullable
- $discord.attachments.item_08.size nullable
- $discord.attachments.item_08.width nullable
- $discord.attachments.item_08.height nullable
- $discord.attachments.item_09 nullable
- $discord.attachments.item_09.name nullable
- $discord.attachments.item_09.content_type nullable
- $discord.attachments.item_09.url nullable
- $discord.attachments.item_09.size nullable
- $discord.attachments.item_09.width nullable
- $discord.attachments.item_09.height nullable
- $discord.attachments.item_10 nullable
- $discord.attachments.item_10.name nullable
- $discord.attachments.item_10.content_type nullable
- $discord.attachments.item_10.url nullable
- $discord.attachments.item_10.size nullable
- $discord.attachments.item_10.width nullable
- $discord.attachments.item_10.height nullable
- $discord.embeds nullable
- $discord.embeds.item_01 nullable
- $discord.embeds.item_01.title nullable
- $discord.embeds.item_01.description nullable
- $discord.embeds.item_01.url nullable
- $discord.embeds.item_01.field_count nullable
- $discord.embeds.item_01.author_name nullable
- $discord.embeds.item_01.image_url nullable
- $discord.embeds.item_02 nullable
- $discord.embeds.item_02.title nullable
- $discord.embeds.item_02.description nullable
- $discord.embeds.item_02.url nullable
- $discord.embeds.item_02.field_count nullable
- $discord.embeds.item_02.author_name nullable
- $discord.embeds.item_02.image_url nullable
- $discord.embeds.item_03 nullable
- $discord.embeds.item_03.title nullable
- $discord.embeds.item_03.description nullable
- $discord.embeds.item_03.url nullable
- $discord.embeds.item_03.field_count nullable
- $discord.embeds.item_03.author_name nullable
- $discord.embeds.item_03.image_url nullable
- $discord.embeds.item_04 nullable
- $discord.embeds.item_04.title nullable
- $discord.embeds.item_04.description nullable
- $discord.embeds.item_04.url nullable
- $discord.embeds.item_04.field_count nullable
- $discord.embeds.item_04.author_name nullable
- $discord.embeds.item_04.image_url nullable
- $discord.embeds.item_05 nullable
- $discord.embeds.item_05.title nullable
- $discord.embeds.item_05.description nullable
- $discord.embeds.item_05.url nullable
- $discord.embeds.item_05.field_count nullable
- $discord.embeds.item_05.author_name nullable
- $discord.embeds.item_05.image_url nullable
- $discord.embeds.item_06 nullable
- $discord.embeds.item_06.title nullable
- $discord.embeds.item_06.description nullable
- $discord.embeds.item_06.url nullable
- $discord.embeds.item_06.field_count nullable
- $discord.embeds.item_06.author_name nullable
- $discord.embeds.item_06.image_url nullable
- $discord.embeds.item_07 nullable
- $discord.embeds.item_07.title nullable
- $discord.embeds.item_07.description nullable
- $discord.embeds.item_07.url nullable
- $discord.embeds.item_07.field_count nullable
- $discord.embeds.item_07.author_name nullable
- $discord.embeds.item_07.image_url nullable
- $discord.embeds.item_08 nullable
- $discord.embeds.item_08.title nullable
- $discord.embeds.item_08.description nullable
- $discord.embeds.item_08.url nullable
- $discord.embeds.item_08.field_count nullable
- $discord.embeds.item_08.author_name nullable
- $discord.embeds.item_08.image_url nullable
- $discord.embeds.item_09 nullable
- $discord.embeds.item_09.title nullable
- $discord.embeds.item_09.description nullable
- $discord.embeds.item_09.url nullable
- $discord.embeds.item_09.field_count nullable
- $discord.embeds.item_09.author_name nullable
- $discord.embeds.item_09.image_url nullable
- $discord.embeds.item_10 nullable
- $discord.embeds.item_10.title nullable
- $discord.embeds.item_10.description nullable
- $discord.embeds.item_10.url nullable
- $discord.embeds.item_10.field_count nullable
- $discord.embeds.item_10.author_name nullable
- $discord.embeds.item_10.image_url nullable
- $discord.reactions nullable
- $discord.reactions.item_01 nullable
- $discord.reactions.item_01.emoji nullable
- $discord.reactions.item_01.emoji_id nullable
- $discord.reactions.item_01.count nullable
- $discord.reactions.item_01.me nullable
- $discord.reactions.item_02 nullable
- $discord.reactions.item_02.emoji nullable
- $discord.reactions.item_02.emoji_id nullable
- $discord.reactions.item_02.count nullable
- $discord.reactions.item_02.me nullable
- $discord.reactions.item_03 nullable
- $discord.reactions.item_03.emoji nullable
- $discord.reactions.item_03.emoji_id nullable
- $discord.reactions.item_03.count nullable
- $discord.reactions.item_03.me nullable
- $discord.reactions.item_04 nullable
- $discord.reactions.item_04.emoji nullable
- $discord.reactions.item_04.emoji_id nullable
- $discord.reactions.item_04.count nullable
- $discord.reactions.item_04.me nullable
- $discord.reactions.item_05 nullable
- $discord.reactions.item_05.emoji nullable
- $discord.reactions.item_05.emoji_id nullable
- $discord.reactions.item_05.count nullable
- $discord.reactions.item_05.me nullable
- $discord.reactions.item_06 nullable
- $discord.reactions.item_06.emoji nullable
- $discord.reactions.item_06.emoji_id nullable
- $discord.reactions.item_06.count nullable
- $discord.reactions.item_06.me nullable
- $discord.reactions.item_07 nullable
- $discord.reactions.item_07.emoji nullable
- $discord.reactions.item_07.emoji_id nullable
- $discord.reactions.item_07.count nullable
- $discord.reactions.item_07.me nullable
- $discord.reactions.item_08 nullable
- $discord.reactions.item_08.emoji nullable
- $discord.reactions.item_08.emoji_id nullable
- $discord.reactions.item_08.count nullable
- $discord.reactions.item_08.me nullable
- $discord.reactions.item_09 nullable
- $discord.reactions.item_09.emoji nullable
- $discord.reactions.item_09.emoji_id nullable
- $discord.reactions.item_09.count nullable
- $discord.reactions.item_09.me nullable
- $discord.reactions.item_10 nullable
- $discord.reactions.item_10.emoji nullable
- $discord.reactions.item_10.emoji_id nullable
- $discord.reactions.item_10.count nullable
- $discord.reactions.item_10.me nullable
- $discord.reactions.item_11 nullable
- $discord.reactions.item_11.emoji nullable
- $discord.reactions.item_11.emoji_id nullable
- $discord.reactions.item_11.count nullable
- $discord.reactions.item_11.me nullable
- $discord.reactions.item_12 nullable
- $discord.reactions.item_12.emoji nullable
- $discord.reactions.item_12.emoji_id nullable
- $discord.reactions.item_12.count nullable
- $discord.reactions.item_12.me nullable
- $discord.reactions.item_13 nullable
- $discord.reactions.item_13.emoji nullable
- $discord.reactions.item_13.emoji_id nullable
- $discord.reactions.item_13.count nullable
- $discord.reactions.item_13.me nullable
- $discord.reactions.item_14 nullable
- $discord.reactions.item_14.emoji nullable
- $discord.reactions.item_14.emoji_id nullable
- $discord.reactions.item_14.count nullable
- $discord.reactions.item_14.me nullable
- $discord.reactions.item_15 nullable
- $discord.reactions.item_15.emoji nullable
- $discord.reactions.item_15.emoji_id nullable
- $discord.reactions.item_15.count nullable
- $discord.reactions.item_15.me nullable
- $discord.reactions.item_16 nullable
- $discord.reactions.item_16.emoji nullable
- $discord.reactions.item_16.emoji_id nullable
- $discord.reactions.item_16.count nullable
- $discord.reactions.item_16.me nullable
- $discord.reactions.item_17 nullable
- $discord.reactions.item_17.emoji nullable
- $discord.reactions.item_17.emoji_id nullable
- $discord.reactions.item_17.count nullable
- $discord.reactions.item_17.me nullable
- $discord.reactions.item_18 nullable
- $discord.reactions.item_18.emoji nullable
- $discord.reactions.item_18.emoji_id nullable
- $discord.reactions.item_18.count nullable
- $discord.reactions.item_18.me nullable
- $discord.reactions.item_19 nullable
- $discord.reactions.item_19.emoji nullable
- $discord.reactions.item_19.emoji_id nullable
- $discord.reactions.item_19.count nullable
- $discord.reactions.item_19.me nullable
- $discord.reactions.item_20 nullable
- $discord.reactions.item_20.emoji nullable
- $discord.reactions.item_20.emoji_id nullable
- $discord.reactions.item_20.count nullable
- $discord.reactions.item_20.me nullable
- $discord.first_attachment nullable
- $discord.first_attachment.name nullable
- $discord.first_attachment.content_type nullable
- $discord.first_attachment.url nullable
- $discord.first_attachment.size nullable
- $discord.first_attachment.width nullable
- $discord.first_attachment.height nullable
- $discord.first_embed nullable
- $discord.first_embed.title nullable
- $discord.first_embed.description nullable
- $discord.first_embed.url nullable
- $discord.first_embed.field_count nullable
- $discord.first_embed.author_name nullable
- $discord.first_embed.image_url nullable
| object Nullable | Structured Discord message metadata. Expand its child properties for message, author, reply, attachment, embed, and reaction values. $discord.guild_id $discord.channel_id $discord.channel_key $discord.channel_name $discord.message_id $discord.content $discord.content_raw $discord.message_type $discord.edited_at $discord.pinned $discord.tts $discord.mentions_everyone $discord.mentioned_user_ids $discord.mentioned_role_ids $discord.attachment_count $discord.embed_count $discord.reaction_count $discord.author.id $discord.author.username $discord.author.global_name $discord.author.is_bot $discord.reply.message_id $discord.reply.channel_id $discord.reply.guild_id $discord.reply.author_id $discord.attachments.item_01.name $discord.attachments.item_01.content_type $discord.attachments.item_01.url $discord.attachments.item_01.size $discord.attachments.item_01.width $discord.attachments.item_01.height $discord.attachments.item_02.name $discord.attachments.item_02.content_type $discord.attachments.item_02.url $discord.attachments.item_02.size $discord.attachments.item_02.width $discord.attachments.item_02.height $discord.attachments.item_03.name $discord.attachments.item_03.content_type $discord.attachments.item_03.url $discord.attachments.item_03.size $discord.attachments.item_03.width $discord.attachments.item_03.height $discord.attachments.item_04.name $discord.attachments.item_04.content_type $discord.attachments.item_04.url $discord.attachments.item_04.size $discord.attachments.item_04.width $discord.attachments.item_04.height $discord.attachments.item_05.name $discord.attachments.item_05.content_type $discord.attachments.item_05.url $discord.attachments.item_05.size $discord.attachments.item_05.width $discord.attachments.item_05.height $discord.attachments.item_06.name $discord.attachments.item_06.content_type $discord.attachments.item_06.url $discord.attachments.item_06.size $discord.attachments.item_06.width $discord.attachments.item_06.height $discord.attachments.item_07.name $discord.attachments.item_07.content_type $discord.attachments.item_07.url $discord.attachments.item_07.size $discord.attachments.item_07.width $discord.attachments.item_07.height $discord.attachments.item_08.name $discord.attachments.item_08.content_type $discord.attachments.item_08.url $discord.attachments.item_08.size $discord.attachments.item_08.width $discord.attachments.item_08.height $discord.attachments.item_09.name $discord.attachments.item_09.content_type $discord.attachments.item_09.url $discord.attachments.item_09.size $discord.attachments.item_09.width $discord.attachments.item_09.height $discord.attachments.item_10.name $discord.attachments.item_10.content_type $discord.attachments.item_10.url $discord.attachments.item_10.size $discord.attachments.item_10.width $discord.attachments.item_10.height $discord.embeds.item_01.title $discord.embeds.item_01.description $discord.embeds.item_01.url $discord.embeds.item_01.field_count $discord.embeds.item_01.author_name $discord.embeds.item_01.image_url $discord.embeds.item_02.title $discord.embeds.item_02.description $discord.embeds.item_02.url $discord.embeds.item_02.field_count $discord.embeds.item_02.author_name $discord.embeds.item_02.image_url $discord.embeds.item_03.title $discord.embeds.item_03.description $discord.embeds.item_03.url $discord.embeds.item_03.field_count $discord.embeds.item_03.author_name $discord.embeds.item_03.image_url $discord.embeds.item_04.title $discord.embeds.item_04.description $discord.embeds.item_04.url $discord.embeds.item_04.field_count $discord.embeds.item_04.author_name $discord.embeds.item_04.image_url $discord.embeds.item_05.title $discord.embeds.item_05.description $discord.embeds.item_05.url $discord.embeds.item_05.field_count $discord.embeds.item_05.author_name $discord.embeds.item_05.image_url $discord.embeds.item_06.title $discord.embeds.item_06.description $discord.embeds.item_06.url $discord.embeds.item_06.field_count $discord.embeds.item_06.author_name $discord.embeds.item_06.image_url $discord.embeds.item_07.title $discord.embeds.item_07.description $discord.embeds.item_07.url $discord.embeds.item_07.field_count $discord.embeds.item_07.author_name $discord.embeds.item_07.image_url $discord.embeds.item_08.title $discord.embeds.item_08.description $discord.embeds.item_08.url $discord.embeds.item_08.field_count $discord.embeds.item_08.author_name $discord.embeds.item_08.image_url $discord.embeds.item_09.title $discord.embeds.item_09.description $discord.embeds.item_09.url $discord.embeds.item_09.field_count $discord.embeds.item_09.author_name $discord.embeds.item_09.image_url $discord.embeds.item_10.title $discord.embeds.item_10.description $discord.embeds.item_10.url $discord.embeds.item_10.field_count $discord.embeds.item_10.author_name $discord.embeds.item_10.image_url $discord.reactions.item_01.emoji $discord.reactions.item_01.emoji_id $discord.reactions.item_01.count $discord.reactions.item_01.me $discord.reactions.item_02.emoji $discord.reactions.item_02.emoji_id $discord.reactions.item_02.count $discord.reactions.item_02.me $discord.reactions.item_03.emoji $discord.reactions.item_03.emoji_id $discord.reactions.item_03.count $discord.reactions.item_03.me $discord.reactions.item_04.emoji $discord.reactions.item_04.emoji_id $discord.reactions.item_04.count $discord.reactions.item_04.me $discord.reactions.item_05.emoji $discord.reactions.item_05.emoji_id $discord.reactions.item_05.count $discord.reactions.item_05.me $discord.reactions.item_06.emoji $discord.reactions.item_06.emoji_id $discord.reactions.item_06.count $discord.reactions.item_06.me $discord.reactions.item_07.emoji $discord.reactions.item_07.emoji_id $discord.reactions.item_07.count $discord.reactions.item_07.me $discord.reactions.item_08.emoji $discord.reactions.item_08.emoji_id $discord.reactions.item_08.count $discord.reactions.item_08.me $discord.reactions.item_09.emoji $discord.reactions.item_09.emoji_id $discord.reactions.item_09.count $discord.reactions.item_09.me $discord.reactions.item_10.emoji $discord.reactions.item_10.emoji_id $discord.reactions.item_10.count $discord.reactions.item_10.me $discord.reactions.item_11.emoji $discord.reactions.item_11.emoji_id $discord.reactions.item_11.count $discord.reactions.item_11.me $discord.reactions.item_12.emoji $discord.reactions.item_12.emoji_id $discord.reactions.item_12.count $discord.reactions.item_12.me $discord.reactions.item_13.emoji $discord.reactions.item_13.emoji_id $discord.reactions.item_13.count $discord.reactions.item_13.me $discord.reactions.item_14.emoji $discord.reactions.item_14.emoji_id $discord.reactions.item_14.count $discord.reactions.item_14.me $discord.reactions.item_15.emoji $discord.reactions.item_15.emoji_id $discord.reactions.item_15.count $discord.reactions.item_15.me $discord.reactions.item_16.emoji $discord.reactions.item_16.emoji_id $discord.reactions.item_16.count $discord.reactions.item_16.me $discord.reactions.item_17.emoji $discord.reactions.item_17.emoji_id $discord.reactions.item_17.count $discord.reactions.item_17.me $discord.reactions.item_18.emoji $discord.reactions.item_18.emoji_id $discord.reactions.item_18.count $discord.reactions.item_18.me $discord.reactions.item_19.emoji $discord.reactions.item_19.emoji_id $discord.reactions.item_19.count $discord.reactions.item_19.me $discord.reactions.item_20.emoji $discord.reactions.item_20.emoji_id $discord.reactions.item_20.count $discord.reactions.item_20.me $discord.first_attachment.name $discord.first_attachment.content_type $discord.first_attachment.url $discord.first_attachment.size $discord.first_attachment.width $discord.first_attachment.height $discord.first_embed.title $discord.first_embed.description $discord.first_embed.url $discord.first_embed.field_count $discord.first_embed.author_name $discord.first_embed.image_url rat5.v2 only | {"guild_id":"123456789012345678","channel_key":"general","message_id":"345678901234567890","content":"Hello @Trekkan","attachment_count":1,"embed_count":1,"reaction_count":2} | Optional |
Templates
Discord logger
Logs Discord messages received from a configured event source mapping.
log(format("[Discord:{0}] {1}: {2}", $discord_channel_key, $discord_author_name, $chat_content))
Back to event catalogDiscord Message Updated
discord.message_updated
A Discord message was edited in a configured channel mapping.
Category: discordStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: Discord gateway via discord.message_updated.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | discord.message_updated | Required |
$event_key | string | Catalog event key for the current event. | discord.message_updated | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$discord_guild_id | string | Discord guild ID that produced the event. | 123456789012345678 | Required |
$discord_channel_id | string | Discord channel ID that produced the event. | 234567890123456789 | Required |
$discord_channel_key | string | Configured RAT channel mapping key. | general | Required |
$discord_channel_name | string | Resolved Discord channel name when available. | general-chat | Optional |
$discord_message_id | string | Discord message identifier. | 345678901234567890 | Required |
$discord_message_timestamp | string | Discord message timestamp in UTC RFC3339 format. | 2026-06-20T16:00:01Z | Required |
$discord_message_edited_at | string | UTC RFC3339 edit timestamp when available. | 2026-06-20T16:01:00Z | Optional |
$discord_author_id | string | Discord author identifier when available. | 456789012345678901 | Optional |
$discord_author_name | string | Discord author display name when available. | Trekkan | Optional |
$discord_mentioned_user_ids | string | Comma-separated mentioned user IDs. | 456789012345678901 | Optional |
$discord_mentioned_role_ids | string | Comma-separated mentioned role IDs. | 567890123456789012 | Optional |
$discord_attachment_count | string | Number of message attachments. | 0 | Required |
$discord_embed_count | string | Number of message embeds. | 0 | Required |
$discord_reply_message_id | string | Referenced message ID when this is a reply. | 345678901234567890 | Optional |
$discord_content_raw | string | Raw Discord message content. | Hello <@456789012345678901> | Optional |
$chat_content | string | Normalized Discord message content. | Hello @Trekkan | Optional |
$discord- $discord.guild_id nullable
- $discord.channel_id nullable
- $discord.channel_key nullable
- $discord.channel_name nullable
- $discord.message_id nullable
- $discord.content nullable
- $discord.content_raw nullable
- $discord.message_type nullable
- $discord.edited_at nullable
- $discord.pinned nullable
- $discord.tts nullable
- $discord.mentions_everyone nullable
- $discord.mentioned_user_ids nullable
- $discord.mentioned_role_ids nullable
- $discord.attachment_count nullable
- $discord.embed_count nullable
- $discord.reaction_count nullable
- $discord.author nullable
- $discord.author.id nullable
- $discord.author.username nullable
- $discord.author.global_name nullable
- $discord.author.is_bot nullable
- $discord.reply nullable
- $discord.reply.message_id nullable
- $discord.reply.channel_id nullable
- $discord.reply.guild_id nullable
- $discord.reply.author_id nullable
- $discord.attachments nullable
- $discord.attachments.item_01 nullable
- $discord.attachments.item_01.name nullable
- $discord.attachments.item_01.content_type nullable
- $discord.attachments.item_01.url nullable
- $discord.attachments.item_01.size nullable
- $discord.attachments.item_01.width nullable
- $discord.attachments.item_01.height nullable
- $discord.attachments.item_02 nullable
- $discord.attachments.item_02.name nullable
- $discord.attachments.item_02.content_type nullable
- $discord.attachments.item_02.url nullable
- $discord.attachments.item_02.size nullable
- $discord.attachments.item_02.width nullable
- $discord.attachments.item_02.height nullable
- $discord.attachments.item_03 nullable
- $discord.attachments.item_03.name nullable
- $discord.attachments.item_03.content_type nullable
- $discord.attachments.item_03.url nullable
- $discord.attachments.item_03.size nullable
- $discord.attachments.item_03.width nullable
- $discord.attachments.item_03.height nullable
- $discord.attachments.item_04 nullable
- $discord.attachments.item_04.name nullable
- $discord.attachments.item_04.content_type nullable
- $discord.attachments.item_04.url nullable
- $discord.attachments.item_04.size nullable
- $discord.attachments.item_04.width nullable
- $discord.attachments.item_04.height nullable
- $discord.attachments.item_05 nullable
- $discord.attachments.item_05.name nullable
- $discord.attachments.item_05.content_type nullable
- $discord.attachments.item_05.url nullable
- $discord.attachments.item_05.size nullable
- $discord.attachments.item_05.width nullable
- $discord.attachments.item_05.height nullable
- $discord.attachments.item_06 nullable
- $discord.attachments.item_06.name nullable
- $discord.attachments.item_06.content_type nullable
- $discord.attachments.item_06.url nullable
- $discord.attachments.item_06.size nullable
- $discord.attachments.item_06.width nullable
- $discord.attachments.item_06.height nullable
- $discord.attachments.item_07 nullable
- $discord.attachments.item_07.name nullable
- $discord.attachments.item_07.content_type nullable
- $discord.attachments.item_07.url nullable
- $discord.attachments.item_07.size nullable
- $discord.attachments.item_07.width nullable
- $discord.attachments.item_07.height nullable
- $discord.attachments.item_08 nullable
- $discord.attachments.item_08.name nullable
- $discord.attachments.item_08.content_type nullable
- $discord.attachments.item_08.url nullable
- $discord.attachments.item_08.size nullable
- $discord.attachments.item_08.width nullable
- $discord.attachments.item_08.height nullable
- $discord.attachments.item_09 nullable
- $discord.attachments.item_09.name nullable
- $discord.attachments.item_09.content_type nullable
- $discord.attachments.item_09.url nullable
- $discord.attachments.item_09.size nullable
- $discord.attachments.item_09.width nullable
- $discord.attachments.item_09.height nullable
- $discord.attachments.item_10 nullable
- $discord.attachments.item_10.name nullable
- $discord.attachments.item_10.content_type nullable
- $discord.attachments.item_10.url nullable
- $discord.attachments.item_10.size nullable
- $discord.attachments.item_10.width nullable
- $discord.attachments.item_10.height nullable
- $discord.embeds nullable
- $discord.embeds.item_01 nullable
- $discord.embeds.item_01.title nullable
- $discord.embeds.item_01.description nullable
- $discord.embeds.item_01.url nullable
- $discord.embeds.item_01.field_count nullable
- $discord.embeds.item_01.author_name nullable
- $discord.embeds.item_01.image_url nullable
- $discord.embeds.item_02 nullable
- $discord.embeds.item_02.title nullable
- $discord.embeds.item_02.description nullable
- $discord.embeds.item_02.url nullable
- $discord.embeds.item_02.field_count nullable
- $discord.embeds.item_02.author_name nullable
- $discord.embeds.item_02.image_url nullable
- $discord.embeds.item_03 nullable
- $discord.embeds.item_03.title nullable
- $discord.embeds.item_03.description nullable
- $discord.embeds.item_03.url nullable
- $discord.embeds.item_03.field_count nullable
- $discord.embeds.item_03.author_name nullable
- $discord.embeds.item_03.image_url nullable
- $discord.embeds.item_04 nullable
- $discord.embeds.item_04.title nullable
- $discord.embeds.item_04.description nullable
- $discord.embeds.item_04.url nullable
- $discord.embeds.item_04.field_count nullable
- $discord.embeds.item_04.author_name nullable
- $discord.embeds.item_04.image_url nullable
- $discord.embeds.item_05 nullable
- $discord.embeds.item_05.title nullable
- $discord.embeds.item_05.description nullable
- $discord.embeds.item_05.url nullable
- $discord.embeds.item_05.field_count nullable
- $discord.embeds.item_05.author_name nullable
- $discord.embeds.item_05.image_url nullable
- $discord.embeds.item_06 nullable
- $discord.embeds.item_06.title nullable
- $discord.embeds.item_06.description nullable
- $discord.embeds.item_06.url nullable
- $discord.embeds.item_06.field_count nullable
- $discord.embeds.item_06.author_name nullable
- $discord.embeds.item_06.image_url nullable
- $discord.embeds.item_07 nullable
- $discord.embeds.item_07.title nullable
- $discord.embeds.item_07.description nullable
- $discord.embeds.item_07.url nullable
- $discord.embeds.item_07.field_count nullable
- $discord.embeds.item_07.author_name nullable
- $discord.embeds.item_07.image_url nullable
- $discord.embeds.item_08 nullable
- $discord.embeds.item_08.title nullable
- $discord.embeds.item_08.description nullable
- $discord.embeds.item_08.url nullable
- $discord.embeds.item_08.field_count nullable
- $discord.embeds.item_08.author_name nullable
- $discord.embeds.item_08.image_url nullable
- $discord.embeds.item_09 nullable
- $discord.embeds.item_09.title nullable
- $discord.embeds.item_09.description nullable
- $discord.embeds.item_09.url nullable
- $discord.embeds.item_09.field_count nullable
- $discord.embeds.item_09.author_name nullable
- $discord.embeds.item_09.image_url nullable
- $discord.embeds.item_10 nullable
- $discord.embeds.item_10.title nullable
- $discord.embeds.item_10.description nullable
- $discord.embeds.item_10.url nullable
- $discord.embeds.item_10.field_count nullable
- $discord.embeds.item_10.author_name nullable
- $discord.embeds.item_10.image_url nullable
- $discord.reactions nullable
- $discord.reactions.item_01 nullable
- $discord.reactions.item_01.emoji nullable
- $discord.reactions.item_01.emoji_id nullable
- $discord.reactions.item_01.count nullable
- $discord.reactions.item_01.me nullable
- $discord.reactions.item_02 nullable
- $discord.reactions.item_02.emoji nullable
- $discord.reactions.item_02.emoji_id nullable
- $discord.reactions.item_02.count nullable
- $discord.reactions.item_02.me nullable
- $discord.reactions.item_03 nullable
- $discord.reactions.item_03.emoji nullable
- $discord.reactions.item_03.emoji_id nullable
- $discord.reactions.item_03.count nullable
- $discord.reactions.item_03.me nullable
- $discord.reactions.item_04 nullable
- $discord.reactions.item_04.emoji nullable
- $discord.reactions.item_04.emoji_id nullable
- $discord.reactions.item_04.count nullable
- $discord.reactions.item_04.me nullable
- $discord.reactions.item_05 nullable
- $discord.reactions.item_05.emoji nullable
- $discord.reactions.item_05.emoji_id nullable
- $discord.reactions.item_05.count nullable
- $discord.reactions.item_05.me nullable
- $discord.reactions.item_06 nullable
- $discord.reactions.item_06.emoji nullable
- $discord.reactions.item_06.emoji_id nullable
- $discord.reactions.item_06.count nullable
- $discord.reactions.item_06.me nullable
- $discord.reactions.item_07 nullable
- $discord.reactions.item_07.emoji nullable
- $discord.reactions.item_07.emoji_id nullable
- $discord.reactions.item_07.count nullable
- $discord.reactions.item_07.me nullable
- $discord.reactions.item_08 nullable
- $discord.reactions.item_08.emoji nullable
- $discord.reactions.item_08.emoji_id nullable
- $discord.reactions.item_08.count nullable
- $discord.reactions.item_08.me nullable
- $discord.reactions.item_09 nullable
- $discord.reactions.item_09.emoji nullable
- $discord.reactions.item_09.emoji_id nullable
- $discord.reactions.item_09.count nullable
- $discord.reactions.item_09.me nullable
- $discord.reactions.item_10 nullable
- $discord.reactions.item_10.emoji nullable
- $discord.reactions.item_10.emoji_id nullable
- $discord.reactions.item_10.count nullable
- $discord.reactions.item_10.me nullable
- $discord.reactions.item_11 nullable
- $discord.reactions.item_11.emoji nullable
- $discord.reactions.item_11.emoji_id nullable
- $discord.reactions.item_11.count nullable
- $discord.reactions.item_11.me nullable
- $discord.reactions.item_12 nullable
- $discord.reactions.item_12.emoji nullable
- $discord.reactions.item_12.emoji_id nullable
- $discord.reactions.item_12.count nullable
- $discord.reactions.item_12.me nullable
- $discord.reactions.item_13 nullable
- $discord.reactions.item_13.emoji nullable
- $discord.reactions.item_13.emoji_id nullable
- $discord.reactions.item_13.count nullable
- $discord.reactions.item_13.me nullable
- $discord.reactions.item_14 nullable
- $discord.reactions.item_14.emoji nullable
- $discord.reactions.item_14.emoji_id nullable
- $discord.reactions.item_14.count nullable
- $discord.reactions.item_14.me nullable
- $discord.reactions.item_15 nullable
- $discord.reactions.item_15.emoji nullable
- $discord.reactions.item_15.emoji_id nullable
- $discord.reactions.item_15.count nullable
- $discord.reactions.item_15.me nullable
- $discord.reactions.item_16 nullable
- $discord.reactions.item_16.emoji nullable
- $discord.reactions.item_16.emoji_id nullable
- $discord.reactions.item_16.count nullable
- $discord.reactions.item_16.me nullable
- $discord.reactions.item_17 nullable
- $discord.reactions.item_17.emoji nullable
- $discord.reactions.item_17.emoji_id nullable
- $discord.reactions.item_17.count nullable
- $discord.reactions.item_17.me nullable
- $discord.reactions.item_18 nullable
- $discord.reactions.item_18.emoji nullable
- $discord.reactions.item_18.emoji_id nullable
- $discord.reactions.item_18.count nullable
- $discord.reactions.item_18.me nullable
- $discord.reactions.item_19 nullable
- $discord.reactions.item_19.emoji nullable
- $discord.reactions.item_19.emoji_id nullable
- $discord.reactions.item_19.count nullable
- $discord.reactions.item_19.me nullable
- $discord.reactions.item_20 nullable
- $discord.reactions.item_20.emoji nullable
- $discord.reactions.item_20.emoji_id nullable
- $discord.reactions.item_20.count nullable
- $discord.reactions.item_20.me nullable
- $discord.first_attachment nullable
- $discord.first_attachment.name nullable
- $discord.first_attachment.content_type nullable
- $discord.first_attachment.url nullable
- $discord.first_attachment.size nullable
- $discord.first_attachment.width nullable
- $discord.first_attachment.height nullable
- $discord.first_embed nullable
- $discord.first_embed.title nullable
- $discord.first_embed.description nullable
- $discord.first_embed.url nullable
- $discord.first_embed.field_count nullable
- $discord.first_embed.author_name nullable
- $discord.first_embed.image_url nullable
| object Nullable | Structured Discord message metadata. Expand its child properties for message, author, reply, attachment, embed, and reaction values. $discord.guild_id $discord.channel_id $discord.channel_key $discord.channel_name $discord.message_id $discord.content $discord.content_raw $discord.message_type $discord.edited_at $discord.pinned $discord.tts $discord.mentions_everyone $discord.mentioned_user_ids $discord.mentioned_role_ids $discord.attachment_count $discord.embed_count $discord.reaction_count $discord.author.id $discord.author.username $discord.author.global_name $discord.author.is_bot $discord.reply.message_id $discord.reply.channel_id $discord.reply.guild_id $discord.reply.author_id $discord.attachments.item_01.name $discord.attachments.item_01.content_type $discord.attachments.item_01.url $discord.attachments.item_01.size $discord.attachments.item_01.width $discord.attachments.item_01.height $discord.attachments.item_02.name $discord.attachments.item_02.content_type $discord.attachments.item_02.url $discord.attachments.item_02.size $discord.attachments.item_02.width $discord.attachments.item_02.height $discord.attachments.item_03.name $discord.attachments.item_03.content_type $discord.attachments.item_03.url $discord.attachments.item_03.size $discord.attachments.item_03.width $discord.attachments.item_03.height $discord.attachments.item_04.name $discord.attachments.item_04.content_type $discord.attachments.item_04.url $discord.attachments.item_04.size $discord.attachments.item_04.width $discord.attachments.item_04.height $discord.attachments.item_05.name $discord.attachments.item_05.content_type $discord.attachments.item_05.url $discord.attachments.item_05.size $discord.attachments.item_05.width $discord.attachments.item_05.height $discord.attachments.item_06.name $discord.attachments.item_06.content_type $discord.attachments.item_06.url $discord.attachments.item_06.size $discord.attachments.item_06.width $discord.attachments.item_06.height $discord.attachments.item_07.name $discord.attachments.item_07.content_type $discord.attachments.item_07.url $discord.attachments.item_07.size $discord.attachments.item_07.width $discord.attachments.item_07.height $discord.attachments.item_08.name $discord.attachments.item_08.content_type $discord.attachments.item_08.url $discord.attachments.item_08.size $discord.attachments.item_08.width $discord.attachments.item_08.height $discord.attachments.item_09.name $discord.attachments.item_09.content_type $discord.attachments.item_09.url $discord.attachments.item_09.size $discord.attachments.item_09.width $discord.attachments.item_09.height $discord.attachments.item_10.name $discord.attachments.item_10.content_type $discord.attachments.item_10.url $discord.attachments.item_10.size $discord.attachments.item_10.width $discord.attachments.item_10.height $discord.embeds.item_01.title $discord.embeds.item_01.description $discord.embeds.item_01.url $discord.embeds.item_01.field_count $discord.embeds.item_01.author_name $discord.embeds.item_01.image_url $discord.embeds.item_02.title $discord.embeds.item_02.description $discord.embeds.item_02.url $discord.embeds.item_02.field_count $discord.embeds.item_02.author_name $discord.embeds.item_02.image_url $discord.embeds.item_03.title $discord.embeds.item_03.description $discord.embeds.item_03.url $discord.embeds.item_03.field_count $discord.embeds.item_03.author_name $discord.embeds.item_03.image_url $discord.embeds.item_04.title $discord.embeds.item_04.description $discord.embeds.item_04.url $discord.embeds.item_04.field_count $discord.embeds.item_04.author_name $discord.embeds.item_04.image_url $discord.embeds.item_05.title $discord.embeds.item_05.description $discord.embeds.item_05.url $discord.embeds.item_05.field_count $discord.embeds.item_05.author_name $discord.embeds.item_05.image_url $discord.embeds.item_06.title $discord.embeds.item_06.description $discord.embeds.item_06.url $discord.embeds.item_06.field_count $discord.embeds.item_06.author_name $discord.embeds.item_06.image_url $discord.embeds.item_07.title $discord.embeds.item_07.description $discord.embeds.item_07.url $discord.embeds.item_07.field_count $discord.embeds.item_07.author_name $discord.embeds.item_07.image_url $discord.embeds.item_08.title $discord.embeds.item_08.description $discord.embeds.item_08.url $discord.embeds.item_08.field_count $discord.embeds.item_08.author_name $discord.embeds.item_08.image_url $discord.embeds.item_09.title $discord.embeds.item_09.description $discord.embeds.item_09.url $discord.embeds.item_09.field_count $discord.embeds.item_09.author_name $discord.embeds.item_09.image_url $discord.embeds.item_10.title $discord.embeds.item_10.description $discord.embeds.item_10.url $discord.embeds.item_10.field_count $discord.embeds.item_10.author_name $discord.embeds.item_10.image_url $discord.reactions.item_01.emoji $discord.reactions.item_01.emoji_id $discord.reactions.item_01.count $discord.reactions.item_01.me $discord.reactions.item_02.emoji $discord.reactions.item_02.emoji_id $discord.reactions.item_02.count $discord.reactions.item_02.me $discord.reactions.item_03.emoji $discord.reactions.item_03.emoji_id $discord.reactions.item_03.count $discord.reactions.item_03.me $discord.reactions.item_04.emoji $discord.reactions.item_04.emoji_id $discord.reactions.item_04.count $discord.reactions.item_04.me $discord.reactions.item_05.emoji $discord.reactions.item_05.emoji_id $discord.reactions.item_05.count $discord.reactions.item_05.me $discord.reactions.item_06.emoji $discord.reactions.item_06.emoji_id $discord.reactions.item_06.count $discord.reactions.item_06.me $discord.reactions.item_07.emoji $discord.reactions.item_07.emoji_id $discord.reactions.item_07.count $discord.reactions.item_07.me $discord.reactions.item_08.emoji $discord.reactions.item_08.emoji_id $discord.reactions.item_08.count $discord.reactions.item_08.me $discord.reactions.item_09.emoji $discord.reactions.item_09.emoji_id $discord.reactions.item_09.count $discord.reactions.item_09.me $discord.reactions.item_10.emoji $discord.reactions.item_10.emoji_id $discord.reactions.item_10.count $discord.reactions.item_10.me $discord.reactions.item_11.emoji $discord.reactions.item_11.emoji_id $discord.reactions.item_11.count $discord.reactions.item_11.me $discord.reactions.item_12.emoji $discord.reactions.item_12.emoji_id $discord.reactions.item_12.count $discord.reactions.item_12.me $discord.reactions.item_13.emoji $discord.reactions.item_13.emoji_id $discord.reactions.item_13.count $discord.reactions.item_13.me $discord.reactions.item_14.emoji $discord.reactions.item_14.emoji_id $discord.reactions.item_14.count $discord.reactions.item_14.me $discord.reactions.item_15.emoji $discord.reactions.item_15.emoji_id $discord.reactions.item_15.count $discord.reactions.item_15.me $discord.reactions.item_16.emoji $discord.reactions.item_16.emoji_id $discord.reactions.item_16.count $discord.reactions.item_16.me $discord.reactions.item_17.emoji $discord.reactions.item_17.emoji_id $discord.reactions.item_17.count $discord.reactions.item_17.me $discord.reactions.item_18.emoji $discord.reactions.item_18.emoji_id $discord.reactions.item_18.count $discord.reactions.item_18.me $discord.reactions.item_19.emoji $discord.reactions.item_19.emoji_id $discord.reactions.item_19.count $discord.reactions.item_19.me $discord.reactions.item_20.emoji $discord.reactions.item_20.emoji_id $discord.reactions.item_20.count $discord.reactions.item_20.me $discord.first_attachment.name $discord.first_attachment.content_type $discord.first_attachment.url $discord.first_attachment.size $discord.first_attachment.width $discord.first_attachment.height $discord.first_embed.title $discord.first_embed.description $discord.first_embed.url $discord.first_embed.field_count $discord.first_embed.author_name $discord.first_embed.image_url rat5.v2 only | {"guild_id":"123456789012345678","channel_key":"general","message_id":"345678901234567890","content":"Hello @Trekkan","attachment_count":1,"embed_count":1,"reaction_count":2} | Optional |
Templates
No template is shipped for this event type. Start with a focused condition and one observable action such as log(...).
Back to event catalogDiscord Message Deleted
discord.message_deleted
A Discord message was deleted from a configured channel mapping.
Category: discordStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: Discord gateway via discord.message_deleted.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | discord.message_deleted | Required |
$event_key | string | Catalog event key for the current event. | discord.message_deleted | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$discord_guild_id | string | Discord guild ID that produced the event. | 123456789012345678 | Required |
$discord_channel_id | string | Discord channel ID that produced the event. | 234567890123456789 | Required |
$discord_channel_key | string | Configured RAT channel mapping key. | general | Required |
$discord_channel_name | string | Resolved Discord channel name when available. | general-chat | Optional |
$discord_message_id | string | Discord message identifier. | 345678901234567890 | Required |
$discord_message_timestamp | string | Discord message timestamp in UTC RFC3339 format. | 2026-06-20T16:00:01Z | Required |
$discord_message_edited_at | string | UTC RFC3339 edit timestamp when available. | 2026-06-20T16:01:00Z | Optional |
$discord_author_id | string | Discord author identifier when available. | 456789012345678901 | Optional |
$discord_author_name | string | Discord author display name when available. | Trekkan | Optional |
$discord_mentioned_user_ids | string | Comma-separated mentioned user IDs. | 456789012345678901 | Optional |
$discord_mentioned_role_ids | string | Comma-separated mentioned role IDs. | 567890123456789012 | Optional |
$discord_attachment_count | string | Number of message attachments. | 0 | Required |
$discord_embed_count | string | Number of message embeds. | 0 | Required |
$discord_reply_message_id | string | Referenced message ID when this is a reply. | 345678901234567890 | Optional |
$discord_content_raw | string | Raw Discord message content. | Hello <@456789012345678901> | Optional |
$chat_content | string | Normalized Discord message content. | Hello @Trekkan | Optional |
$discord- $discord.guild_id nullable
- $discord.channel_id nullable
- $discord.channel_key nullable
- $discord.channel_name nullable
- $discord.message_id nullable
- $discord.content nullable
- $discord.content_raw nullable
- $discord.message_type nullable
- $discord.edited_at nullable
- $discord.pinned nullable
- $discord.tts nullable
- $discord.mentions_everyone nullable
- $discord.mentioned_user_ids nullable
- $discord.mentioned_role_ids nullable
- $discord.attachment_count nullable
- $discord.embed_count nullable
- $discord.reaction_count nullable
- $discord.author nullable
- $discord.author.id nullable
- $discord.author.username nullable
- $discord.author.global_name nullable
- $discord.author.is_bot nullable
- $discord.reply nullable
- $discord.reply.message_id nullable
- $discord.reply.channel_id nullable
- $discord.reply.guild_id nullable
- $discord.reply.author_id nullable
- $discord.attachments nullable
- $discord.attachments.item_01 nullable
- $discord.attachments.item_01.name nullable
- $discord.attachments.item_01.content_type nullable
- $discord.attachments.item_01.url nullable
- $discord.attachments.item_01.size nullable
- $discord.attachments.item_01.width nullable
- $discord.attachments.item_01.height nullable
- $discord.attachments.item_02 nullable
- $discord.attachments.item_02.name nullable
- $discord.attachments.item_02.content_type nullable
- $discord.attachments.item_02.url nullable
- $discord.attachments.item_02.size nullable
- $discord.attachments.item_02.width nullable
- $discord.attachments.item_02.height nullable
- $discord.attachments.item_03 nullable
- $discord.attachments.item_03.name nullable
- $discord.attachments.item_03.content_type nullable
- $discord.attachments.item_03.url nullable
- $discord.attachments.item_03.size nullable
- $discord.attachments.item_03.width nullable
- $discord.attachments.item_03.height nullable
- $discord.attachments.item_04 nullable
- $discord.attachments.item_04.name nullable
- $discord.attachments.item_04.content_type nullable
- $discord.attachments.item_04.url nullable
- $discord.attachments.item_04.size nullable
- $discord.attachments.item_04.width nullable
- $discord.attachments.item_04.height nullable
- $discord.attachments.item_05 nullable
- $discord.attachments.item_05.name nullable
- $discord.attachments.item_05.content_type nullable
- $discord.attachments.item_05.url nullable
- $discord.attachments.item_05.size nullable
- $discord.attachments.item_05.width nullable
- $discord.attachments.item_05.height nullable
- $discord.attachments.item_06 nullable
- $discord.attachments.item_06.name nullable
- $discord.attachments.item_06.content_type nullable
- $discord.attachments.item_06.url nullable
- $discord.attachments.item_06.size nullable
- $discord.attachments.item_06.width nullable
- $discord.attachments.item_06.height nullable
- $discord.attachments.item_07 nullable
- $discord.attachments.item_07.name nullable
- $discord.attachments.item_07.content_type nullable
- $discord.attachments.item_07.url nullable
- $discord.attachments.item_07.size nullable
- $discord.attachments.item_07.width nullable
- $discord.attachments.item_07.height nullable
- $discord.attachments.item_08 nullable
- $discord.attachments.item_08.name nullable
- $discord.attachments.item_08.content_type nullable
- $discord.attachments.item_08.url nullable
- $discord.attachments.item_08.size nullable
- $discord.attachments.item_08.width nullable
- $discord.attachments.item_08.height nullable
- $discord.attachments.item_09 nullable
- $discord.attachments.item_09.name nullable
- $discord.attachments.item_09.content_type nullable
- $discord.attachments.item_09.url nullable
- $discord.attachments.item_09.size nullable
- $discord.attachments.item_09.width nullable
- $discord.attachments.item_09.height nullable
- $discord.attachments.item_10 nullable
- $discord.attachments.item_10.name nullable
- $discord.attachments.item_10.content_type nullable
- $discord.attachments.item_10.url nullable
- $discord.attachments.item_10.size nullable
- $discord.attachments.item_10.width nullable
- $discord.attachments.item_10.height nullable
- $discord.embeds nullable
- $discord.embeds.item_01 nullable
- $discord.embeds.item_01.title nullable
- $discord.embeds.item_01.description nullable
- $discord.embeds.item_01.url nullable
- $discord.embeds.item_01.field_count nullable
- $discord.embeds.item_01.author_name nullable
- $discord.embeds.item_01.image_url nullable
- $discord.embeds.item_02 nullable
- $discord.embeds.item_02.title nullable
- $discord.embeds.item_02.description nullable
- $discord.embeds.item_02.url nullable
- $discord.embeds.item_02.field_count nullable
- $discord.embeds.item_02.author_name nullable
- $discord.embeds.item_02.image_url nullable
- $discord.embeds.item_03 nullable
- $discord.embeds.item_03.title nullable
- $discord.embeds.item_03.description nullable
- $discord.embeds.item_03.url nullable
- $discord.embeds.item_03.field_count nullable
- $discord.embeds.item_03.author_name nullable
- $discord.embeds.item_03.image_url nullable
- $discord.embeds.item_04 nullable
- $discord.embeds.item_04.title nullable
- $discord.embeds.item_04.description nullable
- $discord.embeds.item_04.url nullable
- $discord.embeds.item_04.field_count nullable
- $discord.embeds.item_04.author_name nullable
- $discord.embeds.item_04.image_url nullable
- $discord.embeds.item_05 nullable
- $discord.embeds.item_05.title nullable
- $discord.embeds.item_05.description nullable
- $discord.embeds.item_05.url nullable
- $discord.embeds.item_05.field_count nullable
- $discord.embeds.item_05.author_name nullable
- $discord.embeds.item_05.image_url nullable
- $discord.embeds.item_06 nullable
- $discord.embeds.item_06.title nullable
- $discord.embeds.item_06.description nullable
- $discord.embeds.item_06.url nullable
- $discord.embeds.item_06.field_count nullable
- $discord.embeds.item_06.author_name nullable
- $discord.embeds.item_06.image_url nullable
- $discord.embeds.item_07 nullable
- $discord.embeds.item_07.title nullable
- $discord.embeds.item_07.description nullable
- $discord.embeds.item_07.url nullable
- $discord.embeds.item_07.field_count nullable
- $discord.embeds.item_07.author_name nullable
- $discord.embeds.item_07.image_url nullable
- $discord.embeds.item_08 nullable
- $discord.embeds.item_08.title nullable
- $discord.embeds.item_08.description nullable
- $discord.embeds.item_08.url nullable
- $discord.embeds.item_08.field_count nullable
- $discord.embeds.item_08.author_name nullable
- $discord.embeds.item_08.image_url nullable
- $discord.embeds.item_09 nullable
- $discord.embeds.item_09.title nullable
- $discord.embeds.item_09.description nullable
- $discord.embeds.item_09.url nullable
- $discord.embeds.item_09.field_count nullable
- $discord.embeds.item_09.author_name nullable
- $discord.embeds.item_09.image_url nullable
- $discord.embeds.item_10 nullable
- $discord.embeds.item_10.title nullable
- $discord.embeds.item_10.description nullable
- $discord.embeds.item_10.url nullable
- $discord.embeds.item_10.field_count nullable
- $discord.embeds.item_10.author_name nullable
- $discord.embeds.item_10.image_url nullable
- $discord.reactions nullable
- $discord.reactions.item_01 nullable
- $discord.reactions.item_01.emoji nullable
- $discord.reactions.item_01.emoji_id nullable
- $discord.reactions.item_01.count nullable
- $discord.reactions.item_01.me nullable
- $discord.reactions.item_02 nullable
- $discord.reactions.item_02.emoji nullable
- $discord.reactions.item_02.emoji_id nullable
- $discord.reactions.item_02.count nullable
- $discord.reactions.item_02.me nullable
- $discord.reactions.item_03 nullable
- $discord.reactions.item_03.emoji nullable
- $discord.reactions.item_03.emoji_id nullable
- $discord.reactions.item_03.count nullable
- $discord.reactions.item_03.me nullable
- $discord.reactions.item_04 nullable
- $discord.reactions.item_04.emoji nullable
- $discord.reactions.item_04.emoji_id nullable
- $discord.reactions.item_04.count nullable
- $discord.reactions.item_04.me nullable
- $discord.reactions.item_05 nullable
- $discord.reactions.item_05.emoji nullable
- $discord.reactions.item_05.emoji_id nullable
- $discord.reactions.item_05.count nullable
- $discord.reactions.item_05.me nullable
- $discord.reactions.item_06 nullable
- $discord.reactions.item_06.emoji nullable
- $discord.reactions.item_06.emoji_id nullable
- $discord.reactions.item_06.count nullable
- $discord.reactions.item_06.me nullable
- $discord.reactions.item_07 nullable
- $discord.reactions.item_07.emoji nullable
- $discord.reactions.item_07.emoji_id nullable
- $discord.reactions.item_07.count nullable
- $discord.reactions.item_07.me nullable
- $discord.reactions.item_08 nullable
- $discord.reactions.item_08.emoji nullable
- $discord.reactions.item_08.emoji_id nullable
- $discord.reactions.item_08.count nullable
- $discord.reactions.item_08.me nullable
- $discord.reactions.item_09 nullable
- $discord.reactions.item_09.emoji nullable
- $discord.reactions.item_09.emoji_id nullable
- $discord.reactions.item_09.count nullable
- $discord.reactions.item_09.me nullable
- $discord.reactions.item_10 nullable
- $discord.reactions.item_10.emoji nullable
- $discord.reactions.item_10.emoji_id nullable
- $discord.reactions.item_10.count nullable
- $discord.reactions.item_10.me nullable
- $discord.reactions.item_11 nullable
- $discord.reactions.item_11.emoji nullable
- $discord.reactions.item_11.emoji_id nullable
- $discord.reactions.item_11.count nullable
- $discord.reactions.item_11.me nullable
- $discord.reactions.item_12 nullable
- $discord.reactions.item_12.emoji nullable
- $discord.reactions.item_12.emoji_id nullable
- $discord.reactions.item_12.count nullable
- $discord.reactions.item_12.me nullable
- $discord.reactions.item_13 nullable
- $discord.reactions.item_13.emoji nullable
- $discord.reactions.item_13.emoji_id nullable
- $discord.reactions.item_13.count nullable
- $discord.reactions.item_13.me nullable
- $discord.reactions.item_14 nullable
- $discord.reactions.item_14.emoji nullable
- $discord.reactions.item_14.emoji_id nullable
- $discord.reactions.item_14.count nullable
- $discord.reactions.item_14.me nullable
- $discord.reactions.item_15 nullable
- $discord.reactions.item_15.emoji nullable
- $discord.reactions.item_15.emoji_id nullable
- $discord.reactions.item_15.count nullable
- $discord.reactions.item_15.me nullable
- $discord.reactions.item_16 nullable
- $discord.reactions.item_16.emoji nullable
- $discord.reactions.item_16.emoji_id nullable
- $discord.reactions.item_16.count nullable
- $discord.reactions.item_16.me nullable
- $discord.reactions.item_17 nullable
- $discord.reactions.item_17.emoji nullable
- $discord.reactions.item_17.emoji_id nullable
- $discord.reactions.item_17.count nullable
- $discord.reactions.item_17.me nullable
- $discord.reactions.item_18 nullable
- $discord.reactions.item_18.emoji nullable
- $discord.reactions.item_18.emoji_id nullable
- $discord.reactions.item_18.count nullable
- $discord.reactions.item_18.me nullable
- $discord.reactions.item_19 nullable
- $discord.reactions.item_19.emoji nullable
- $discord.reactions.item_19.emoji_id nullable
- $discord.reactions.item_19.count nullable
- $discord.reactions.item_19.me nullable
- $discord.reactions.item_20 nullable
- $discord.reactions.item_20.emoji nullable
- $discord.reactions.item_20.emoji_id nullable
- $discord.reactions.item_20.count nullable
- $discord.reactions.item_20.me nullable
- $discord.first_attachment nullable
- $discord.first_attachment.name nullable
- $discord.first_attachment.content_type nullable
- $discord.first_attachment.url nullable
- $discord.first_attachment.size nullable
- $discord.first_attachment.width nullable
- $discord.first_attachment.height nullable
- $discord.first_embed nullable
- $discord.first_embed.title nullable
- $discord.first_embed.description nullable
- $discord.first_embed.url nullable
- $discord.first_embed.field_count nullable
- $discord.first_embed.author_name nullable
- $discord.first_embed.image_url nullable
| object Nullable | Structured Discord message metadata. Expand its child properties for message, author, reply, attachment, embed, and reaction values. $discord.guild_id $discord.channel_id $discord.channel_key $discord.channel_name $discord.message_id $discord.content $discord.content_raw $discord.message_type $discord.edited_at $discord.pinned $discord.tts $discord.mentions_everyone $discord.mentioned_user_ids $discord.mentioned_role_ids $discord.attachment_count $discord.embed_count $discord.reaction_count $discord.author.id $discord.author.username $discord.author.global_name $discord.author.is_bot $discord.reply.message_id $discord.reply.channel_id $discord.reply.guild_id $discord.reply.author_id $discord.attachments.item_01.name $discord.attachments.item_01.content_type $discord.attachments.item_01.url $discord.attachments.item_01.size $discord.attachments.item_01.width $discord.attachments.item_01.height $discord.attachments.item_02.name $discord.attachments.item_02.content_type $discord.attachments.item_02.url $discord.attachments.item_02.size $discord.attachments.item_02.width $discord.attachments.item_02.height $discord.attachments.item_03.name $discord.attachments.item_03.content_type $discord.attachments.item_03.url $discord.attachments.item_03.size $discord.attachments.item_03.width $discord.attachments.item_03.height $discord.attachments.item_04.name $discord.attachments.item_04.content_type $discord.attachments.item_04.url $discord.attachments.item_04.size $discord.attachments.item_04.width $discord.attachments.item_04.height $discord.attachments.item_05.name $discord.attachments.item_05.content_type $discord.attachments.item_05.url $discord.attachments.item_05.size $discord.attachments.item_05.width $discord.attachments.item_05.height $discord.attachments.item_06.name $discord.attachments.item_06.content_type $discord.attachments.item_06.url $discord.attachments.item_06.size $discord.attachments.item_06.width $discord.attachments.item_06.height $discord.attachments.item_07.name $discord.attachments.item_07.content_type $discord.attachments.item_07.url $discord.attachments.item_07.size $discord.attachments.item_07.width $discord.attachments.item_07.height $discord.attachments.item_08.name $discord.attachments.item_08.content_type $discord.attachments.item_08.url $discord.attachments.item_08.size $discord.attachments.item_08.width $discord.attachments.item_08.height $discord.attachments.item_09.name $discord.attachments.item_09.content_type $discord.attachments.item_09.url $discord.attachments.item_09.size $discord.attachments.item_09.width $discord.attachments.item_09.height $discord.attachments.item_10.name $discord.attachments.item_10.content_type $discord.attachments.item_10.url $discord.attachments.item_10.size $discord.attachments.item_10.width $discord.attachments.item_10.height $discord.embeds.item_01.title $discord.embeds.item_01.description $discord.embeds.item_01.url $discord.embeds.item_01.field_count $discord.embeds.item_01.author_name $discord.embeds.item_01.image_url $discord.embeds.item_02.title $discord.embeds.item_02.description $discord.embeds.item_02.url $discord.embeds.item_02.field_count $discord.embeds.item_02.author_name $discord.embeds.item_02.image_url $discord.embeds.item_03.title $discord.embeds.item_03.description $discord.embeds.item_03.url $discord.embeds.item_03.field_count $discord.embeds.item_03.author_name $discord.embeds.item_03.image_url $discord.embeds.item_04.title $discord.embeds.item_04.description $discord.embeds.item_04.url $discord.embeds.item_04.field_count $discord.embeds.item_04.author_name $discord.embeds.item_04.image_url $discord.embeds.item_05.title $discord.embeds.item_05.description $discord.embeds.item_05.url $discord.embeds.item_05.field_count $discord.embeds.item_05.author_name $discord.embeds.item_05.image_url $discord.embeds.item_06.title $discord.embeds.item_06.description $discord.embeds.item_06.url $discord.embeds.item_06.field_count $discord.embeds.item_06.author_name $discord.embeds.item_06.image_url $discord.embeds.item_07.title $discord.embeds.item_07.description $discord.embeds.item_07.url $discord.embeds.item_07.field_count $discord.embeds.item_07.author_name $discord.embeds.item_07.image_url $discord.embeds.item_08.title $discord.embeds.item_08.description $discord.embeds.item_08.url $discord.embeds.item_08.field_count $discord.embeds.item_08.author_name $discord.embeds.item_08.image_url $discord.embeds.item_09.title $discord.embeds.item_09.description $discord.embeds.item_09.url $discord.embeds.item_09.field_count $discord.embeds.item_09.author_name $discord.embeds.item_09.image_url $discord.embeds.item_10.title $discord.embeds.item_10.description $discord.embeds.item_10.url $discord.embeds.item_10.field_count $discord.embeds.item_10.author_name $discord.embeds.item_10.image_url $discord.reactions.item_01.emoji $discord.reactions.item_01.emoji_id $discord.reactions.item_01.count $discord.reactions.item_01.me $discord.reactions.item_02.emoji $discord.reactions.item_02.emoji_id $discord.reactions.item_02.count $discord.reactions.item_02.me $discord.reactions.item_03.emoji $discord.reactions.item_03.emoji_id $discord.reactions.item_03.count $discord.reactions.item_03.me $discord.reactions.item_04.emoji $discord.reactions.item_04.emoji_id $discord.reactions.item_04.count $discord.reactions.item_04.me $discord.reactions.item_05.emoji $discord.reactions.item_05.emoji_id $discord.reactions.item_05.count $discord.reactions.item_05.me $discord.reactions.item_06.emoji $discord.reactions.item_06.emoji_id $discord.reactions.item_06.count $discord.reactions.item_06.me $discord.reactions.item_07.emoji $discord.reactions.item_07.emoji_id $discord.reactions.item_07.count $discord.reactions.item_07.me $discord.reactions.item_08.emoji $discord.reactions.item_08.emoji_id $discord.reactions.item_08.count $discord.reactions.item_08.me $discord.reactions.item_09.emoji $discord.reactions.item_09.emoji_id $discord.reactions.item_09.count $discord.reactions.item_09.me $discord.reactions.item_10.emoji $discord.reactions.item_10.emoji_id $discord.reactions.item_10.count $discord.reactions.item_10.me $discord.reactions.item_11.emoji $discord.reactions.item_11.emoji_id $discord.reactions.item_11.count $discord.reactions.item_11.me $discord.reactions.item_12.emoji $discord.reactions.item_12.emoji_id $discord.reactions.item_12.count $discord.reactions.item_12.me $discord.reactions.item_13.emoji $discord.reactions.item_13.emoji_id $discord.reactions.item_13.count $discord.reactions.item_13.me $discord.reactions.item_14.emoji $discord.reactions.item_14.emoji_id $discord.reactions.item_14.count $discord.reactions.item_14.me $discord.reactions.item_15.emoji $discord.reactions.item_15.emoji_id $discord.reactions.item_15.count $discord.reactions.item_15.me $discord.reactions.item_16.emoji $discord.reactions.item_16.emoji_id $discord.reactions.item_16.count $discord.reactions.item_16.me $discord.reactions.item_17.emoji $discord.reactions.item_17.emoji_id $discord.reactions.item_17.count $discord.reactions.item_17.me $discord.reactions.item_18.emoji $discord.reactions.item_18.emoji_id $discord.reactions.item_18.count $discord.reactions.item_18.me $discord.reactions.item_19.emoji $discord.reactions.item_19.emoji_id $discord.reactions.item_19.count $discord.reactions.item_19.me $discord.reactions.item_20.emoji $discord.reactions.item_20.emoji_id $discord.reactions.item_20.count $discord.reactions.item_20.me $discord.first_attachment.name $discord.first_attachment.content_type $discord.first_attachment.url $discord.first_attachment.size $discord.first_attachment.width $discord.first_attachment.height $discord.first_embed.title $discord.first_embed.description $discord.first_embed.url $discord.first_embed.field_count $discord.first_embed.author_name $discord.first_embed.image_url rat5.v2 only | {"guild_id":"123456789012345678","channel_key":"general","message_id":"345678901234567890","content":"Hello @Trekkan","attachment_count":1,"embed_count":1,"reaction_count":2} | Optional |
Templates
No template is shipped for this event type. Start with a focused condition and one observable action such as log(...).
Back to event catalogDiscord Reaction Added
discord.reaction_added
A reaction was added to a Discord message in a configured channel mapping.
Category: discordStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: Discord gateway via discord.reaction_added.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | discord.reaction_added | Required |
$event_key | string | Catalog event key for the current event. | discord.reaction_added | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$discord_guild_id | string | Discord guild ID that produced the event. | 123456789012345678 | Required |
$discord_channel_id | string | Discord channel ID that produced the event. | 234567890123456789 | Required |
$discord_channel_key | string | Configured RAT channel mapping key. | general | Required |
$discord_message_id | string | Discord message identifier. | 345678901234567890 | Required |
$discord_reaction_user_id | string | Discord user ID that changed the reaction. | 456789012345678901 | Required |
$discord_reaction_emoji | string | Discord's stored representation of the emoji. | 👍 | Required |
$discord_reaction_emoji_id | string | Custom Discord emoji ID when applicable. | 567890123456789012 | Optional |
Templates
No template is shipped for this event type. Start with a focused condition and one observable action such as log(...).
Back to event catalogDiscord Reaction Removed
discord.reaction_removed
A reaction was removed from a Discord message in a configured channel mapping.
Category: discordStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: Discord gateway via discord.reaction_removed.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | discord.reaction_removed | Required |
$event_key | string | Catalog event key for the current event. | discord.reaction_removed | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$discord_guild_id | string | Discord guild ID that produced the event. | 123456789012345678 | Required |
$discord_channel_id | string | Discord channel ID that produced the event. | 234567890123456789 | Required |
$discord_channel_key | string | Configured RAT channel mapping key. | general | Required |
$discord_message_id | string | Discord message identifier. | 345678901234567890 | Required |
$discord_reaction_user_id | string | Discord user ID that changed the reaction. | 456789012345678901 | Required |
$discord_reaction_emoji | string | Discord's stored representation of the emoji. | 👍 | Required |
$discord_reaction_emoji_id | string | Custom Discord emoji ID when applicable. | 567890123456789012 | Optional |
Templates
No template is shipped for this event type. Start with a focused condition and one observable action such as log(...).
Back to event catalogPlayer Joined
player.joined
A player joined the game according to telnet output.
Category: playerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.player.joined.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | player.joined | Required |
$event_key | string | Catalog event key for the current event. | player.joined | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$player.name | string | Display name of the player who joined. | Trekkan | Required |
$player- $player.id nullable
- $player.name nullable
- $player.platform_id nullable
- $player.cross_platform_id nullable
- $player.steam_id nullable
- $player.eos_id nullable
- $player.xbl_id nullable
- $player.platform_family nullable
- $player.platform_user_id nullable
- $player.cross_platform_family nullable
- $player.cross_platform_user_id nullable
- $player.entity_id nullable
- $player.online nullable
- $player.last_seen_at nullable
- $player.ip_address nullable
- $player.level nullable
- $player.health nullable
- $player.stamina nullable
- $player.score nullable
- $player.ping nullable
- $player.deaths nullable
- $player.zombie_kills nullable
- $player.player_kills nullable
- $player.total_play_time_seconds nullable
- $player.credits nullable
- $player.ban_active nullable
- $player.ban_reason nullable
- $player.ban_until nullable
- $player.group nullable
- $player.group.id nullable
- $player.group.name nullable
- $player.group.max_teleport_destinations nullable
- $player.group.teleport_cooldown_seconds nullable
- $player.position nullable
- $player.position.x nullable
- $player.position.y nullable
- $player.position.z nullable
| object Nullable | Resolved RAT player object for this event. Use child properties like $player.name or $player.position.x. When the event provides a player name, $player.name is populated even if RAT cannot match a unique stored player record; richer profile fields are filled when RAT resolves the player. $player.id $player.name $player.platform_id $player.cross_platform_id $player.steam_id $player.eos_id $player.xbl_id $player.platform_family $player.platform_user_id $player.cross_platform_family $player.cross_platform_user_id $player.entity_id $player.online $player.last_seen_at $player.ip_address $player.level $player.health $player.stamina $player.score $player.ping $player.deaths $player.zombie_kills $player.player_kills $player.total_play_time_seconds $player.credits $player.ban_active $player.ban_reason $player.ban_until $player.group.id $player.group.name $player.group.max_teleport_destinations $player.group.teleport_cooldown_seconds $player.position.x $player.position.y $player.position.z rat5.v2 only | — | Optional |
Templates
Join tracker
Records the latest player join in shared state and writes a friendly log line.
set global.last_joined_player = $player.name
set global.last_joined_at = $current_datetime
log(format("Player joined: {0}", $player.name))
Back to event catalogPlayer Left
player.left
A player left the game according to telnet output.
Category: playerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.player.left.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | player.left | Required |
$event_key | string | Catalog event key for the current event. | player.left | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$player.name | string | Display name of the player who left. | Trekkan | Required |
$player- $player.id nullable
- $player.name nullable
- $player.platform_id nullable
- $player.cross_platform_id nullable
- $player.steam_id nullable
- $player.eos_id nullable
- $player.xbl_id nullable
- $player.platform_family nullable
- $player.platform_user_id nullable
- $player.cross_platform_family nullable
- $player.cross_platform_user_id nullable
- $player.entity_id nullable
- $player.online nullable
- $player.last_seen_at nullable
- $player.ip_address nullable
- $player.level nullable
- $player.health nullable
- $player.stamina nullable
- $player.score nullable
- $player.ping nullable
- $player.deaths nullable
- $player.zombie_kills nullable
- $player.player_kills nullable
- $player.total_play_time_seconds nullable
- $player.credits nullable
- $player.ban_active nullable
- $player.ban_reason nullable
- $player.ban_until nullable
- $player.group nullable
- $player.group.id nullable
- $player.group.name nullable
- $player.group.max_teleport_destinations nullable
- $player.group.teleport_cooldown_seconds nullable
- $player.position nullable
- $player.position.x nullable
- $player.position.y nullable
- $player.position.z nullable
| object Nullable | Resolved RAT player object for this event. Use child properties like $player.name or $player.position.x. When the event provides a player name, $player.name is populated even if RAT cannot match a unique stored player record; richer profile fields are filled when RAT resolves the player. $player.id $player.name $player.platform_id $player.cross_platform_id $player.steam_id $player.eos_id $player.xbl_id $player.platform_family $player.platform_user_id $player.cross_platform_family $player.cross_platform_user_id $player.entity_id $player.online $player.last_seen_at $player.ip_address $player.level $player.health $player.stamina $player.score $player.ping $player.deaths $player.zombie_kills $player.player_kills $player.total_play_time_seconds $player.credits $player.ban_active $player.ban_reason $player.ban_until $player.group.id $player.group.name $player.group.max_teleport_destinations $player.group.teleport_cooldown_seconds $player.position.x $player.position.y $player.position.z rat5.v2 only | — | Optional |
Templates
Departure tracker
Records the latest player departure and logs the event.
set global.last_left_player = $player.name
set global.last_left_at = $current_datetime
log(format("Player left: {0}", $player.name))
Back to event catalogEntity Killed
entity.killed
An entity was killed according to telnet output, including the killed entity and the killer identity details.
Category: combatStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.entity.killed.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | entity.killed | Required |
$event_key | string | Catalog event key for the current event. | entity.killed | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-24T19:40:54Z | Required |
$killed_entity_name | string | The name of the entity that was killed. | zombieBusinessMan | Required |
$killed_entity_id | string | The in-game entity ID of the entity that was killed. | 230 | Required |
$killed_player_name | string | The matched player display name when the killed entity matches a known player by entity ID and name. | Avarice | Optional |
$killed_player_id | string | The RAT player ID when the killed entity matches a known player. | player-2 | Optional |
$killed_platform_id | string | The killed player's platform ID when the killed entity matches a known player. | Steam_76561197970441158 | Optional |
$killed_cross_platform_id | string | The killed player's cross-platform ID when available for a matched player. | EOS_11111111111111111111111111111111 | Optional |
$killer_name | string | The raw killer name parsed from the telnet event. | Trekkan | Required |
$killer_entity_id | string | The in-game entity ID of the killer. | 171 | Required |
$killer_player_name | string | The matched player display name when the killer matches a known player by entity ID and name. | Trekkan | Optional |
$killer_player_id | string | The RAT player ID when the killer matches a known player. | player-1 | Optional |
$killer_platform_id | string | The killer's platform ID when the killer matches a known player. | Steam_76561197970441157 | Optional |
$killer_cross_platform_id | string | The killer's cross-platform ID when available for a matched player. | EOS_00000000000000000000000000000000 | Optional |
Templates
Killer tracker
Tracks the latest resolved kill and logs the raw kill line.
set global.last_killed_entity = $killed_entity_name
set global.last_kill_at = $current_datetime
if not empty($killed_player_name) then
set global.last_killed_entity = $killed_player_name
end
if not empty($killer_player_name) then
set global.last_killer_name = $killer_player_name
else
set global.last_killer_name = $killer_name
end
log(format("{0} killed by {1}", global.last_killed_entity, global.last_killer_name))
Back to event catalogServer Unresponsive
server.unresponsive
The running game server stopped producing valid telnet command responses.
Category: serverStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: runtime matcher via rat.telnet_health.unresponsive.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | server.unresponsive | Required |
$event_key | string | Catalog event key for the current event. | server.unresponsive | Required |
$occurred_at_utc | string | UTC timestamp when RAT declared the server unresponsive. | 2026-08-23T20:00:45Z | Required |
$failure_count | string | Number of consecutive health failures observed. | 3 | Required |
$failure_reason | string | Stable reason code for the latest health failure. | response_timeout | Required |
$failure_detail | string | Human-readable detail for the latest health failure. | context deadline exceeded | Required |
$last_responsive_at_utc | string | UTC timestamp of the last valid telnet response. | 2026-08-23T19:59:55Z | Optional |
$first_failure_at_utc | string | UTC timestamp of the first failure in this incident. | 2026-08-23T20:00:05Z | Required |
$unresponsive_since_utc | string | UTC timestamp when RAT declared the server unresponsive. | 2026-08-23T20:00:45Z | Required |
$probe_interval_seconds | string | Seconds between active telnet health probes. | 20 | Required |
$probe_timeout_seconds | string | Seconds allowed for a telnet health probe response. | 5 | Required |
Templates
No template is shipped for this event type. Start with a focused condition and one observable action such as log(...).
Back to event catalogServer Responsive
server.responsive
The game server produced a valid telnet response after being declared unresponsive.
Category: serverStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: runtime matcher via rat.telnet_health.responsive.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | server.responsive | Required |
$event_key | string | Catalog event key for the current event. | server.responsive | Required |
$occurred_at_utc | string | UTC timestamp when RAT observed recovery. | 2026-08-23T20:01:05Z | Required |
$responsive_at_utc | string | UTC timestamp of the response that established recovery. | 2026-08-23T20:01:05Z | Required |
$unresponsive_since_utc | string | UTC timestamp when RAT declared the server unresponsive. | 2026-08-23T20:00:45Z | Required |
$first_failure_at_utc | string | UTC timestamp of the first failure in the recovered incident. | 2026-08-23T20:00:05Z | Required |
$outage_duration_seconds | string | Seconds from the first health failure until recovery. | 60 | Required |
$failed_probe_count | string | Total health failures recorded before recovery. | 3 | Required |
$last_health_failure_reason | string | Stable reason code for the last failure before recovery. | response_timeout | Required |
Templates
No template is shipped for this event type. Start with a focused condition and one observable action such as log(...).
Back to event catalogText Match
text.match
Fires for every raw telnet console line, providing the unmodified line as a token. Use script conditions to filter for lines of interest.
Category: telnetStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: runtime matcher via .
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | text.match | Required |
$event_key | string | Catalog event key for the current event. | text.match | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$raw_line | string | The unmodified raw telnet console line that triggered this event. | 2026-06-20T16:00:01 12345.678 INF StartGame done | Required |
Templates
Pattern filter
Matches lines containing a specific phrase and logs them.
if contains($raw_line, "INF StartGame") then
log(format("Game started: {0}", $raw_line))
end
Back to event catalogBackup Started
backup.started
A backup operation has started.
Category: BackupsStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: internally emitted via internal.backup.started.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | backup.started | Required |
$event_key | string | Catalog event key for the current event. | backup.started | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-08-24T18:00:00Z | Required |
$backup_filename | string Nullable | Backup artifact filename. | MyWorld-2026-08-24-180000.zip | Required |
$backup_destination | string Nullable | Backup destination paths. | D:\Backups | Required |
$backup_start_time | string Nullable | UTC timestamp when the backup started. | 2026-08-24T18:00:00Z | Required |
$backup_completion_time | string Nullable | UTC timestamp when the backup completed or failed. | 2026-08-24T18:02:30Z | Required |
$backup_duration | number Nullable | Backup duration in seconds. | 150.25 | Required |
$backup_size | number Nullable | Backup artifact size in bytes. | 1073741824 | Required |
$backup_compression_type | string Nullable | Compression type used for the backup, or none. | zip | Required |
$backup_error_message | string Nullable | Failure message when the backup did not complete. | destination disk is full | Required |
$backup_retained_count | number Nullable | Number of retained save backups after the operation. | 5 | Required |
Templates
No template is shipped for this event type. Start with a focused condition and one observable action such as log(...).
Back to event catalogBackup Completed
backup.completed
A backup operation completed successfully.
Category: BackupsStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: internally emitted via internal.backup.completed.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | backup.completed | Required |
$event_key | string | Catalog event key for the current event. | backup.completed | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-08-24T18:00:00Z | Required |
$backup_filename | string Nullable | Backup artifact filename. | MyWorld-2026-08-24-180000.zip | Required |
$backup_destination | string Nullable | Backup destination paths. | D:\Backups | Required |
$backup_start_time | string Nullable | UTC timestamp when the backup started. | 2026-08-24T18:00:00Z | Required |
$backup_completion_time | string Nullable | UTC timestamp when the backup completed or failed. | 2026-08-24T18:02:30Z | Required |
$backup_duration | number Nullable | Backup duration in seconds. | 150.25 | Required |
$backup_size | number Nullable | Backup artifact size in bytes. | 1073741824 | Required |
$backup_compression_type | string Nullable | Compression type used for the backup, or none. | zip | Required |
$backup_error_message | string Nullable | Failure message when the backup did not complete. | destination disk is full | Required |
$backup_retained_count | number Nullable | Number of retained save backups after the operation. | 5 | Required |
Templates
No template is shipped for this event type. Start with a focused condition and one observable action such as log(...).
Back to event catalogBackup Failed
backup.failed
A backup operation failed.
Category: BackupsStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: internally emitted via internal.backup.failed.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | backup.failed | Required |
$event_key | string | Catalog event key for the current event. | backup.failed | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-08-24T18:00:00Z | Required |
$backup_filename | string Nullable | Backup artifact filename. | MyWorld-2026-08-24-180000.zip | Required |
$backup_destination | string Nullable | Backup destination paths. | D:\Backups | Required |
$backup_start_time | string Nullable | UTC timestamp when the backup started. | 2026-08-24T18:00:00Z | Required |
$backup_completion_time | string Nullable | UTC timestamp when the backup completed or failed. | 2026-08-24T18:02:30Z | Required |
$backup_duration | number Nullable | Backup duration in seconds. | 150.25 | Required |
$backup_size | number Nullable | Backup artifact size in bytes. | 1073741824 | Required |
$backup_compression_type | string Nullable | Compression type used for the backup, or none. | zip | Required |
$backup_error_message | string Nullable | Failure message when the backup did not complete. | destination disk is full | Required |
$backup_retained_count | number Nullable | Number of retained save backups after the operation. | 5 | Required |
Templates
No template is shipped for this event type. Start with a focused condition and one observable action such as log(...).
Back to event catalogServer Ready
server.ready
The game server is ready and accepting player connections.
Category: ServerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: internally emitted via internal.server.ready.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | server.ready | Required |
$event_key | string | Catalog event key for the current event. | server.ready | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-08-24T18:30:00Z | Required |
$server_state | string Nullable | Game server lifecycle state for this event. | running | Required |
$server_process_id | number Nullable | Operating-system process ID for the game server. | 12345 | Required |
$server_started_at | string Nullable | UTC timestamp when the current game server process started. | 2026-08-24T18:00:00Z | Required |
$server_ready_at | string Nullable | UTC timestamp when the game server became ready for player connections. | 2026-08-24T18:02:00Z | Required |
$server_stopped_at | string Nullable | UTC timestamp when the game server stopped. | 2026-08-24T20:00:00Z | Required |
$server_uptime | string Nullable | Human-readable game server uptime at this lifecycle event. | 2h 0m | Required |
$server_restart_reason | string Nullable | Reason supplied for the restart when available. | scheduled maintenance | Required |
$server_restart_delay | number Nullable | Delay before restart in seconds when applicable. | 30 | Required |
Templates
No template is shipped for this event type. Start with a focused condition and one observable action such as log(...).
Back to event catalogServer Restart
server.restarting
The game server is restarting.
Category: ServerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: internally emitted via internal.server.restarting.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | server.restarting | Required |
$event_key | string | Catalog event key for the current event. | server.restarting | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-08-24T18:30:00Z | Required |
$server_state | string Nullable | Game server lifecycle state for this event. | running | Required |
$server_process_id | number Nullable | Operating-system process ID for the game server. | 12345 | Required |
$server_started_at | string Nullable | UTC timestamp when the current game server process started. | 2026-08-24T18:00:00Z | Required |
$server_ready_at | string Nullable | UTC timestamp when the game server became ready for player connections. | 2026-08-24T18:02:00Z | Required |
$server_stopped_at | string Nullable | UTC timestamp when the game server stopped. | 2026-08-24T20:00:00Z | Required |
$server_uptime | string Nullable | Human-readable game server uptime at this lifecycle event. | 2h 0m | Required |
$server_restart_reason | string Nullable | Reason supplied for the restart when available. | scheduled maintenance | Required |
$server_restart_delay | number Nullable | Delay before restart in seconds when applicable. | 30 | Required |
Templates
No template is shipped for this event type. Start with a focused condition and one observable action such as log(...).
Back to event catalogServer Start
server.started
The game server process has started.
Category: ServerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: internally emitted via internal.server.started.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | server.started | Required |
$event_key | string | Catalog event key for the current event. | server.started | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-08-24T18:30:00Z | Required |
$server_state | string Nullable | Game server lifecycle state for this event. | running | Required |
$server_process_id | number Nullable | Operating-system process ID for the game server. | 12345 | Required |
$server_started_at | string Nullable | UTC timestamp when the current game server process started. | 2026-08-24T18:00:00Z | Required |
$server_ready_at | string Nullable | UTC timestamp when the game server became ready for player connections. | 2026-08-24T18:02:00Z | Required |
$server_stopped_at | string Nullable | UTC timestamp when the game server stopped. | 2026-08-24T20:00:00Z | Required |
$server_uptime | string Nullable | Human-readable game server uptime at this lifecycle event. | 2h 0m | Required |
$server_restart_reason | string Nullable | Reason supplied for the restart when available. | scheduled maintenance | Required |
$server_restart_delay | number Nullable | Delay before restart in seconds when applicable. | 30 | Required |
Templates
No template is shipped for this event type. Start with a focused condition and one observable action such as log(...).
Back to event catalogServer Stop
server.stopped
The game server process has stopped.
Category: ServerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: internally emitted via internal.server.stopped.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | server.stopped | Required |
$event_key | string | Catalog event key for the current event. | server.stopped | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-08-24T18:30:00Z | Required |
$server_state | string Nullable | Game server lifecycle state for this event. | running | Required |
$server_process_id | number Nullable | Operating-system process ID for the game server. | 12345 | Required |
$server_started_at | string Nullable | UTC timestamp when the current game server process started. | 2026-08-24T18:00:00Z | Required |
$server_ready_at | string Nullable | UTC timestamp when the game server became ready for player connections. | 2026-08-24T18:02:00Z | Required |
$server_stopped_at | string Nullable | UTC timestamp when the game server stopped. | 2026-08-24T20:00:00Z | Required |
$server_uptime | string Nullable | Human-readable game server uptime at this lifecycle event. | 2h 0m | Required |
$server_restart_reason | string Nullable | Reason supplied for the restart when available. | scheduled maintenance | Required |
$server_restart_delay | number Nullable | Delay before restart in seconds when applicable. | 30 | Required |
Templates
No template is shipped for this event type. Start with a focused condition and one observable action such as log(...).
Back to event catalogNew Player Joined
player.new_joined
A player joined the game and RAT created their player record for the first time.
Category: PlayerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: internally emitted via internal.player.new_joined.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | player.new_joined | Required |
$event_key | string | Catalog event key for the current event. | player.new_joined | Required |
$occurred_at_utc | string | UTC timestamp for when the player joined. | 2026-08-24T20:00:00Z | Required |
$player.name | string | Display name of the new player who joined. | Trekkan | Required |
$player- $player.id nullable
- $player.name nullable
- $player.platform_id nullable
- $player.cross_platform_id nullable
- $player.steam_id nullable
- $player.eos_id nullable
- $player.xbl_id nullable
- $player.platform_family nullable
- $player.platform_user_id nullable
- $player.cross_platform_family nullable
- $player.cross_platform_user_id nullable
- $player.entity_id nullable
- $player.online nullable
- $player.last_seen_at nullable
- $player.ip_address nullable
- $player.level nullable
- $player.health nullable
- $player.stamina nullable
- $player.score nullable
- $player.ping nullable
- $player.deaths nullable
- $player.zombie_kills nullable
- $player.player_kills nullable
- $player.total_play_time_seconds nullable
- $player.credits nullable
- $player.ban_active nullable
- $player.ban_reason nullable
- $player.ban_until nullable
- $player.group nullable
- $player.group.id nullable
- $player.group.name nullable
- $player.group.max_teleport_destinations nullable
- $player.group.teleport_cooldown_seconds nullable
- $player.position nullable
- $player.position.x nullable
- $player.position.y nullable
- $player.position.z nullable
| object Nullable | Resolved RAT player object for this event. Use child properties like $player.name or $player.position.x. When the event provides a player name, $player.name is populated even if RAT cannot match a unique stored player record; richer profile fields are filled when RAT resolves the player. $player.id $player.name $player.platform_id $player.cross_platform_id $player.steam_id $player.eos_id $player.xbl_id $player.platform_family $player.platform_user_id $player.cross_platform_family $player.cross_platform_user_id $player.entity_id $player.online $player.last_seen_at $player.ip_address $player.level $player.health $player.stamina $player.score $player.ping $player.deaths $player.zombie_kills $player.player_kills $player.total_play_time_seconds $player.credits $player.ban_active $player.ban_reason $player.ban_until $player.group.id $player.group.name $player.group.max_teleport_destinations $player.group.teleport_cooldown_seconds $player.position.x $player.position.y $player.position.z rat5.v2 only | — | Optional |
Templates
Welcome new player
Logs a welcome message for a player joining for the first time.
log(format("Welcome, {0}!", $player.name))
Back to event catalogBloodmoon Started
bloodmoon.started
A blood moon has started for the reported in-game day.
Category: BloodmoonStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.bloodmoon.started.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | bloodmoon.started | Required |
$event_key | string | Catalog event key for the current event. | bloodmoon.started | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$bloodmoon_day | string | The in-game day reported in the blood moon start line. | 7 | Required |
Templates
Workbench starter
Starter template scaffolded from the developer workbench.
# Review before enabling in production
log("Implement this event handler")
Back to event catalogBloodmoon Ended
bloodmoon.ended
A blood moon has ended.
Category: BloodmoonStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.bloodmoon.ended.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | bloodmoon.ended | Required |
$event_key | string | Catalog event key for the current event. | bloodmoon.ended | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
Templates
Workbench starter
Starter template scaffolded from the developer workbench.
# Review before enabling in production
log("Implement this event handler")
Back to event catalogPlayer Backpack Location
custom.backpack_location
A player's backpack location
Category: PlayerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.custom.backpack_location.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | custom.backpack_location | Required |
$event_key | string | Catalog event key for the current event. | custom.backpack_location | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
Templates
Workbench starter
Starter template scaffolded from the developer workbench.
# Review before enabling in production
log("Implement this event handler")
Back to event catalogPreparing Quit
custom.preparing_quit
The server is shutting down
Category: Game ServerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.custom.preparing_quit.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | custom.preparing_quit | Required |
$event_key | string | Catalog event key for the current event. | custom.preparing_quit | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
Templates
Workbench starter
Starter template scaffolded from the developer workbench.
# Review before enabling in production
log("Implement this event handler")
Back to event catalogGame Server Stats
custom.server_stats
Get the server stats like fps, heap, max, chunks, etc.
Category: Game ServerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.custom.server_stats.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | custom.server_stats | Required |
$event_key | string | Catalog event key for the current event. | custom.server_stats | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$inf_time | string | Auto-detected value parsed from the "INF Time" field in the pasted telnet line. | 1556.95m | Optional |
$fps | string | Auto-detected value parsed from the "FPS" field in the pasted telnet line. | 19.49 | Optional |
$heap | string | Auto-detected value parsed from the "Heap" field in the pasted telnet line. | 1112.5MB | Optional |
$max | string | Auto-detected value parsed from the "Max" field in the pasted telnet line. | 1886.5MB | Optional |
$chunks | string | Auto-detected value parsed from the "Chunks" field in the pasted telnet line. | 14 | Optional |
$cgo | string | Auto-detected value parsed from the "CGO" field in the pasted telnet line. | 0 | Optional |
$ply | string | Auto-detected value parsed from the "Ply" field in the pasted telnet line. | 0 | Optional |
$zom | string | Auto-detected value parsed from the "Zom" field in the pasted telnet line. | 0 | Optional |
$ent | string | Auto-detected value parsed from the "Ent" field in the pasted telnet line. | 0 | Optional |
$items | string | Auto-detected value parsed from the "Items" field in the pasted telnet line. | 0 | Optional |
$co | string | Auto-detected value parsed from the "CO" field in the pasted telnet line. | 0 | Optional |
$rss | string | Auto-detected value parsed from the "RSS" field in the pasted telnet line. | 708.1MB | Optional |
Templates
Workbench starter
Starter template scaffolded from the developer workbench.
# Review before enabling in production
log("Implement this event handler")
Back to event catalogStart Game
custom.start_game
Fires when the game server starts up and is ready for players to join.
Category: Game ServerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.custom.start_game.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | custom.start_game | Required |
$event_key | string | Catalog event key for the current event. | custom.start_game | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
Templates
Workbench starter
Starter template scaffolded from the developer workbench.
#
Back to event catalogPlayer Connected
player.connected
A player has connected to the game server, but not yet spawned into the game world.
Category: PlayerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.player.connected.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | player.connected | Required |
$event_key | string | Catalog event key for the current event. | player.connected | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$entityid | string | Auto-detected value parsed from the "entityid" field in the pasted telnet line. | 171 | Optional |
$name | string | Auto-detected value parsed from the "name" field in the pasted telnet line. | Trekkan | Optional |
$pltfmid | string | Auto-detected value parsed from the "pltfmid" field in the pasted telnet line. | Steam_76561197970441157 | Optional |
$crossid | string | Auto-detected value parsed from the "crossid" field in the pasted telnet line. | EOS_000271f41dc6415ebc9a49f6dc33edbf | Optional |
$steam_owner | string | Auto-detected value parsed from the "steamOwner" field in the pasted telnet line. | Steam_76561197970441157 | Optional |
$ip | string | Auto-detected value parsed from the "ip" field in the pasted telnet line. | 127.0.0.1 | Optional |
$player- $player.id nullable
- $player.name nullable
- $player.platform_id nullable
- $player.cross_platform_id nullable
- $player.steam_id nullable
- $player.eos_id nullable
- $player.xbl_id nullable
- $player.platform_family nullable
- $player.platform_user_id nullable
- $player.cross_platform_family nullable
- $player.cross_platform_user_id nullable
- $player.entity_id nullable
- $player.online nullable
- $player.last_seen_at nullable
- $player.ip_address nullable
- $player.level nullable
- $player.health nullable
- $player.stamina nullable
- $player.score nullable
- $player.ping nullable
- $player.deaths nullable
- $player.zombie_kills nullable
- $player.player_kills nullable
- $player.total_play_time_seconds nullable
- $player.credits nullable
- $player.ban_active nullable
- $player.ban_reason nullable
- $player.ban_until nullable
- $player.group nullable
- $player.group.id nullable
- $player.group.name nullable
- $player.group.max_teleport_destinations nullable
- $player.group.teleport_cooldown_seconds nullable
- $player.position nullable
- $player.position.x nullable
- $player.position.y nullable
- $player.position.z nullable
| object Nullable | Resolved RAT player object for this event. Use child properties like $player.name or $player.position.x. When the event provides a player name, $player.name is populated even if RAT cannot match a unique stored player record; richer profile fields are filled when RAT resolves the player. $player.id $player.name $player.platform_id $player.cross_platform_id $player.steam_id $player.eos_id $player.xbl_id $player.platform_family $player.platform_user_id $player.cross_platform_family $player.cross_platform_user_id $player.entity_id $player.online $player.last_seen_at $player.ip_address $player.level $player.health $player.stamina $player.score $player.ping $player.deaths $player.zombie_kills $player.player_kills $player.total_play_time_seconds $player.credits $player.ban_active $player.ban_reason $player.ban_until $player.group.id $player.group.name $player.group.max_teleport_destinations $player.group.teleport_cooldown_seconds $player.position.x $player.position.y $player.position.z rat5.v2 only | — | Optional |
Templates
Workbench starter
Starter template scaffolded from the developer workbench.
# Review before enabling in production
log("Implement this event handler")
Back to event catalogPlayer Died
player.died
A player died
Category: PlayerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.player.died.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | player.died | Required |
$event_key | string | Catalog event key for the current event. | player.died | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$inf_gmsg | string | Auto-detected value parsed from the "INF GMSG" field in the pasted telnet line. | Player | Optional |
$player | string | Legacy scalar player name parsed from the telnet line. Deprecated; use $player_name | Trekkan | Optional |
$player_name | string | Player name parsed from the telnet line. | Trekkan | Optional |
Templates
Workbench starter
Starter template scaffolded from the developer workbench.
# Review before enabling in production
log("Implement this event handler")
Back to event catalogPlayer Disconnected
player.disconnected
A player disconnected from the game server
Category: PlayerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.player.disconnected.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | player.disconnected | Required |
$event_key | string | Catalog event key for the current event. | player.disconnected | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$inf_player_disconnected | string | Auto-detected value parsed from the "INF Player disconnected" field in the pasted telnet line. | EntityID=171 | Optional |
$pltfm_id | string | Auto-detected value parsed from the "PltfmId" field in the pasted telnet line. | Steam_76561197970441157 | Optional |
$cross_id | string | Auto-detected value parsed from the "CrossId" field in the pasted telnet line. | EOS_000271f41dc6415ebc9a49f6dc33edbf | Optional |
$owner_id | string | Auto-detected value parsed from the "OwnerID" field in the pasted telnet line. | Steam_76561197970441157 | Optional |
$player.name | string | Auto-detected value parsed from the "PlayerName" field in the pasted telnet line. | Trekkan | Optional |
$client_number | string | Auto-detected value parsed from the "ClientNumber" field in the pasted telnet line. | 1 | Optional |
$player- $player.id nullable
- $player.name nullable
- $player.platform_id nullable
- $player.cross_platform_id nullable
- $player.steam_id nullable
- $player.eos_id nullable
- $player.xbl_id nullable
- $player.platform_family nullable
- $player.platform_user_id nullable
- $player.cross_platform_family nullable
- $player.cross_platform_user_id nullable
- $player.entity_id nullable
- $player.online nullable
- $player.last_seen_at nullable
- $player.ip_address nullable
- $player.level nullable
- $player.health nullable
- $player.stamina nullable
- $player.score nullable
- $player.ping nullable
- $player.deaths nullable
- $player.zombie_kills nullable
- $player.player_kills nullable
- $player.total_play_time_seconds nullable
- $player.credits nullable
- $player.ban_active nullable
- $player.ban_reason nullable
- $player.ban_until nullable
- $player.group nullable
- $player.group.id nullable
- $player.group.name nullable
- $player.group.max_teleport_destinations nullable
- $player.group.teleport_cooldown_seconds nullable
- $player.position nullable
- $player.position.x nullable
- $player.position.y nullable
- $player.position.z nullable
| object Nullable | Resolved RAT player object for this event. Use child properties like $player.name or $player.position.x. When the event provides a player name, $player.name is populated even if RAT cannot match a unique stored player record; richer profile fields are filled when RAT resolves the player. $player.id $player.name $player.platform_id $player.cross_platform_id $player.steam_id $player.eos_id $player.xbl_id $player.platform_family $player.platform_user_id $player.cross_platform_family $player.cross_platform_user_id $player.entity_id $player.online $player.last_seen_at $player.ip_address $player.level $player.health $player.stamina $player.score $player.ping $player.deaths $player.zombie_kills $player.player_kills $player.total_play_time_seconds $player.credits $player.ban_active $player.ban_reason $player.ban_until $player.group.id $player.group.name $player.group.max_teleport_destinations $player.group.teleport_cooldown_seconds $player.position.x $player.position.y $player.position.z rat5.v2 only | — | Optional |
Templates
Workbench starter
Starter template scaffolded from the developer workbench.
# Review before enabling in production
log("Implement this event handler")
Back to event catalogPlayer Kicked
player.kicked
A player was kicked from the game server, including the kick kind, optional message, and player identity details reported by telnet.
Category: PlayerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.player.kicked.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | player.kicked | Required |
$event_key | string | Catalog event key for the current event. | player.kicked | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-07-05T22:59:59Z | Required |
$kick_type | string | Kick type reported in the telnet line before the kick message. | Kick | Optional |
$kick_message | string | Kick message reported in the telnet line when present. | You suck at everything! | Optional |
$entity_id | string | Auto-detected value parsed from the "EntityID" field in the pasted telnet line. | 171 | Optional |
$pltfm_id | string | Auto-detected value parsed from the "PltfmId" field in the pasted telnet line. | Steam_76561197970441157 | Optional |
$cross_id | string | Auto-detected value parsed from the "CrossId" field in the pasted telnet line. | EOS_000271f41dc6415ebc9a49f6dc33edbf | Optional |
$owner_id | string | Auto-detected value parsed from the "OwnerID" field in the pasted telnet line. | Steam_76561197970441157 | Optional |
$player.name | string | Auto-detected value parsed from the "PlayerName" field in the pasted telnet line. | Trekkan | Optional |
$client_number | string | Auto-detected value parsed from the "ClientNumber" field in the pasted telnet line. | 3 | Optional |
$player- $player.id nullable
- $player.name nullable
- $player.platform_id nullable
- $player.cross_platform_id nullable
- $player.steam_id nullable
- $player.eos_id nullable
- $player.xbl_id nullable
- $player.platform_family nullable
- $player.platform_user_id nullable
- $player.cross_platform_family nullable
- $player.cross_platform_user_id nullable
- $player.entity_id nullable
- $player.online nullable
- $player.last_seen_at nullable
- $player.ip_address nullable
- $player.level nullable
- $player.health nullable
- $player.stamina nullable
- $player.score nullable
- $player.ping nullable
- $player.deaths nullable
- $player.zombie_kills nullable
- $player.player_kills nullable
- $player.total_play_time_seconds nullable
- $player.credits nullable
- $player.ban_active nullable
- $player.ban_reason nullable
- $player.ban_until nullable
- $player.group nullable
- $player.group.id nullable
- $player.group.name nullable
- $player.group.max_teleport_destinations nullable
- $player.group.teleport_cooldown_seconds nullable
- $player.position nullable
- $player.position.x nullable
- $player.position.y nullable
- $player.position.z nullable
| object Nullable | Resolved RAT player object for this event. Use child properties like $player.name or $player.position.x. When the event provides a player name, $player.name is populated even if RAT cannot match a unique stored player record; richer profile fields are filled when RAT resolves the player. $player.id $player.name $player.platform_id $player.cross_platform_id $player.steam_id $player.eos_id $player.xbl_id $player.platform_family $player.platform_user_id $player.cross_platform_family $player.cross_platform_user_id $player.entity_id $player.online $player.last_seen_at $player.ip_address $player.level $player.health $player.stamina $player.score $player.ping $player.deaths $player.zombie_kills $player.player_kills $player.total_play_time_seconds $player.credits $player.ban_active $player.ban_reason $player.ban_until $player.group.id $player.group.name $player.group.max_teleport_destinations $player.group.teleport_cooldown_seconds $player.position.x $player.position.y $player.position.z rat5.v2 only | — | Optional |
Templates
Workbench starter
Starter template scaffolded from the developer workbench.
# Review before enabling in production
log("Implement this event handler")
Back to event catalogPlayer Banned
player.banned
A player was banned from the game server, including the ban expiration, optional reason, and player identity details reported by telnet.
Category: PlayerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.player.banned.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | player.banned | Required |
$event_key | string | Catalog event key for the current event. | player.banned | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-07-05T23:01:59Z | Required |
$ban_until | string | Ban expiration timestamp reported in the telnet line. | 2026-07-05 16:02:59 | Optional |
$ban_reason | string | Ban reason reported in the telnet line when present. | This is the reason | Optional |
$entity_id | string | Auto-detected value parsed from the "EntityID" field in the pasted telnet line. | 171 | Optional |
$pltfm_id | string | Auto-detected value parsed from the "PltfmId" field in the pasted telnet line. | Steam_76561197970441157 | Optional |
$cross_id | string | Auto-detected value parsed from the "CrossId" field in the pasted telnet line. | EOS_000271f41dc6415ebc9a49f6dc33edbf | Optional |
$owner_id | string | Auto-detected value parsed from the "OwnerID" field in the pasted telnet line. | Steam_76561197970441157 | Optional |
$player.name | string | Auto-detected value parsed from the "PlayerName" field in the pasted telnet line. | Trekkan | Optional |
$client_number | string | Auto-detected value parsed from the "ClientNumber" field in the pasted telnet line. | 4 | Optional |
$player- $player.id nullable
- $player.name nullable
- $player.platform_id nullable
- $player.cross_platform_id nullable
- $player.steam_id nullable
- $player.eos_id nullable
- $player.xbl_id nullable
- $player.platform_family nullable
- $player.platform_user_id nullable
- $player.cross_platform_family nullable
- $player.cross_platform_user_id nullable
- $player.entity_id nullable
- $player.online nullable
- $player.last_seen_at nullable
- $player.ip_address nullable
- $player.level nullable
- $player.health nullable
- $player.stamina nullable
- $player.score nullable
- $player.ping nullable
- $player.deaths nullable
- $player.zombie_kills nullable
- $player.player_kills nullable
- $player.total_play_time_seconds nullable
- $player.credits nullable
- $player.ban_active nullable
- $player.ban_reason nullable
- $player.ban_until nullable
- $player.group nullable
- $player.group.id nullable
- $player.group.name nullable
- $player.group.max_teleport_destinations nullable
- $player.group.teleport_cooldown_seconds nullable
- $player.position nullable
- $player.position.x nullable
- $player.position.y nullable
- $player.position.z nullable
| object Nullable | Resolved RAT player object for this event. Use child properties like $player.name or $player.position.x. When the event provides a player name, $player.name is populated even if RAT cannot match a unique stored player record; richer profile fields are filled when RAT resolves the player. $player.id $player.name $player.platform_id $player.cross_platform_id $player.steam_id $player.eos_id $player.xbl_id $player.platform_family $player.platform_user_id $player.cross_platform_family $player.cross_platform_user_id $player.entity_id $player.online $player.last_seen_at $player.ip_address $player.level $player.health $player.stamina $player.score $player.ping $player.deaths $player.zombie_kills $player.player_kills $player.total_play_time_seconds $player.credits $player.ban_active $player.ban_reason $player.ban_until $player.group.id $player.group.name $player.group.max_teleport_destinations $player.group.teleport_cooldown_seconds $player.position.x $player.position.y $player.position.z rat5.v2 only | — | Optional |
Templates
Workbench starter
Starter template scaffolded from the developer workbench.
# Review before enabling in production
log("Implement this event handler")
Back to event catalogPlayer Spawned in World
player.spawned_in_world
A player spawned in the game world. Check $reason for why.
Category: PlayerStatus: activeSchema: v1Scripting: yesOrdering: yes
Source: telnet parsed via telnet.player.spawned_in_world.
Event variables
| Name | Kind | Description | Example | Availability |
|---|
$event_type | string | Catalog event key for the current event. | player.spawned_in_world | Required |
$event_key | string | Catalog event key for the current event. | player.spawned_in_world | Required |
$occurred_at_utc | string | UTC timestamp for when the event occurred. | 2026-06-20T16:00:01Z | Required |
$reason | string | Auto-detected value parsed from the "reason" field in the pasted telnet line. | Died | Optional |
$position | string | Auto-detected value parsed from the "position" field in the pasted telnet line. | -344, 84, 403 | Optional |
$position_x | string | Auto-detected X component parsed from the "position" field in the pasted telnet line. | -344 | Optional |
$position_y | string | Auto-detected Y component parsed from the "position" field in the pasted telnet line. | 84 | Optional |
$position_z | string | Auto-detected Z component parsed from the "position" field in the pasted telnet line. | 403 | Optional |
$entity_id | string | Auto-detected value parsed from the "EntityID" field in the pasted telnet line. | 171 | Optional |
$pltfm_id | string | Auto-detected value parsed from the "PltfmId" field in the pasted telnet line. | Steam_76561197970441157 | Optional |
$cross_id | string | Auto-detected value parsed from the "CrossId" field in the pasted telnet line. | EOS_000271f41dc6415ebc9a49f6dc33edbf | Optional |
$owner_id | string | Auto-detected value parsed from the "OwnerID" field in the pasted telnet line. | Steam_76561197970441157 | Optional |
$player.name | string | Auto-detected value parsed from the "PlayerName" field in the pasted telnet line. | Trekkan | Optional |
$client_number | string | Auto-detected value parsed from the "ClientNumber" field in the pasted telnet line. | 1 | Optional |
$player- $player.id nullable
- $player.name nullable
- $player.platform_id nullable
- $player.cross_platform_id nullable
- $player.steam_id nullable
- $player.eos_id nullable
- $player.xbl_id nullable
- $player.platform_family nullable
- $player.platform_user_id nullable
- $player.cross_platform_family nullable
- $player.cross_platform_user_id nullable
- $player.entity_id nullable
- $player.online nullable
- $player.last_seen_at nullable
- $player.ip_address nullable
- $player.level nullable
- $player.health nullable
- $player.stamina nullable
- $player.score nullable
- $player.ping nullable
- $player.deaths nullable
- $player.zombie_kills nullable
- $player.player_kills nullable
- $player.total_play_time_seconds nullable
- $player.credits nullable
- $player.ban_active nullable
- $player.ban_reason nullable
- $player.ban_until nullable
- $player.group nullable
- $player.group.id nullable
- $player.group.name nullable
- $player.group.max_teleport_destinations nullable
- $player.group.teleport_cooldown_seconds nullable
- $player.position nullable
- $player.position.x nullable
- $player.position.y nullable
- $player.position.z nullable
| object Nullable | Resolved RAT player object for this event. Use child properties like $player.name or $player.position.x. When the event provides a player name, $player.name is populated even if RAT cannot match a unique stored player record; richer profile fields are filled when RAT resolves the player. $player.id $player.name $player.platform_id $player.cross_platform_id $player.steam_id $player.eos_id $player.xbl_id $player.platform_family $player.platform_user_id $player.cross_platform_family $player.cross_platform_user_id $player.entity_id $player.online $player.last_seen_at $player.ip_address $player.level $player.health $player.stamina $player.score $player.ping $player.deaths $player.zombie_kills $player.player_kills $player.total_play_time_seconds $player.credits $player.ban_active $player.ban_reason $player.ban_until $player.group.id $player.group.name $player.group.max_teleport_destinations $player.group.teleport_cooldown_seconds $player.position.x $player.position.y $player.position.z rat5.v2 only | — | Optional |
Templates
Workbench starter
Starter template scaffolded from the developer workbench.
# Review before enabling in production
log("Implement this event handler")
Back to event catalog
6. Execution, waits, and troubleshooting
Execution results
| Status | Meaning |
success | The script completed and RAT stored its output and state summary. |
waiting | wait(...) suspended this logical execution and scheduled its continuation. |
invalid_script | Validation failed, so RAT skipped this definition. |
runtime_error | Execution failed at a reported line and column; later definitions still run. |
Wait behavior
One wait may be at most 60 seconds. A logical execution may remain alive for at most 10 minutes and suspend at most 16 times. RAT allows at most 256 pending waits. Waits live in memory, so shutdown or restart interrupts them rather than replaying stale automation.
When an event does not run
- Confirm the definition is enabled, runnable, and attached to an active catalog key.
- Check validation diagnostics for unknown variables, invalid object paths, wrong argument counts, or malformed blocks.
- Preview with a recent snapshot and inspect branch decisions, outputs, global mutations, and runtime error details.
- Confirm the required subsystem is available: telnet, Discord, backups, player data, or managed runtime.
- For RAT-managed definitions, verify that only enabled state and order were changed.
Language referenceSee
RAT 5 Scripting for syntax, scopes, reusable functions, telnet capture, and every built-in function.