Variables
Variables are placeholders in curly braces, such as {user.mention} or {server.name}, that the bot replaces with real values when it sends a message. They work in the templates you customize on the Templates page and in the text layers of the Image Builder.
Which variables a message receives depends on the message: a welcome knows the new member, a ban DM knows the moderator and the reason. In the Message Builder, the Variables section on the Settings tab always lists the ones the current template receives, and the tables below list them all.
Note
A variable the message does not receive is left exactly as you typed it, braces included, so a typo is easy to spot. Messages you send by hand from the Message Builder's Send tab are posted as written, without filling variables.
Syntax
Filters
Add filters after a | to change a value. You can chain them: {user.display_name | upper | truncate(20)}.
| Filter | Result |
|---|---|
upper, lower, title | UPPERCASE, lowercase, Title Case |
trim | Removes spaces at the start and end |
length | The number of characters |
number | Adds thousands separators: 1234567 becomes 1,234,567 |
duration | Seconds (or HH:MM:SS) as 1h23m45s; duration(clock) gives 1:23:45 |
ts() | A Unix timestamp as a Discord timestamp; ts(R) gives "in 3 days", and the styles are t, T, d, D, f, F (the default, ts()) and R. Write the parentheses: a plain ts does nothing |
default(text) | Uses text when the value is empty |
replace(old, new) | Replaces every old with new |
truncate(n) | At most n characters, ending in ...; truncate(n, suffix) uses your own ending |
slice(start, end) | Part of the text by position; end is optional |
pad_left(width, char), pad_right(width, char) | Pads the value to width characters with char (a space when left out) |
linktext | Removes emoji, for use as the text of a [text](link) link (Discord does not show such links when the text has emoji) |
An unknown filter leaves the value unchanged.
Stat channel names use a slightly different set of filters, described in the Analytics module docs.
Conditions
{if: variable | shown when set | shown when empty} shows the second part when the variable has a value and the third part otherwise. The third part is optional:
{if: member.nick | Nickname: {member.nick} | No nickname set}
Conditions can be nested.
Special values
| Variable | Result |
|---|---|
{newline} | A line break |
{space} | A space |
{null} | Nothing. As the "empty" part of a condition, it removes the whole line. |
Lists and dates
Mod log messages about a member receive their roles as a list, user.roles (and mod.roles for the moderator). Repeat a piece of text for every role with {join: list | item text | separator}, where the item text can use {mention}, {name}, {id}, {color} and {position}:
{join: user.roles | {mention} | {space}}
The birthday date can be formatted with {strftime: birthday.date | format}, for example {strftime: birthday.date | %B %d} for "July 14".
Shared variables
These groups are available in many messages. Each module's table below names the groups its messages receive.
Server
| Variable | Description |
|---|---|
{server.name} | Server name |
{server.id} | Server ID |
{server.icon} | Server icon URL |
{server.banner} | Server banner URL |
{server.splash} | Invite splash URL |
{server.discovery_splash} | Discovery splash URL |
{server.member_count} | Total member count |
{server.owner_id} | Server owner ID |
{server.created_at} | Unix timestamp integer for <t:{server.created_at}:f> or :R formatting |
{server.description} | Server description |
{server.preferred_locale} | Preferred locale code |
{server.premium_tier} | Server boost tier |
{server.boost_count} | Number of boosts |
{server.vanity_url_code} | Vanity invite code |
{server.vanity_url} | Full vanity invite URL |
{server.verification_level} | Server verification level |
{server.nsfw_level} | Server NSFW level |
{server.features} | Comma-separated server feature flags |
User
| Variable | Description |
|---|---|
{user.name} | Username |
{user.display_name} | Display name (global name or username) |
{user.id} | User ID |
{user.mention} | User mention (<@id>) |
{user.avatar} | User avatar URL |
{user.tag} | username#discriminator (or username for new accounts) |
{user.bot} | Whether the user is a bot account (true/false) |
{user.created_at} | Unix timestamp integer for <t:{user.created_at}:f> or :R formatting |
{user.color} | User color as a decimal integer (member role color or user accent color) |
{user.age} | User age when available (e.g. from configured birthday data) |
Author
| Variable | Description |
|---|---|
{author.name} | Author username |
{author.display_name} | Display name (global name or username) |
{author.id} | Author ID |
{author.mention} | Author mention (<@id>) |
{author.avatar} | Author avatar URL |
{author.tag} | username#discriminator (or username for new accounts) |
{author.bot} | Whether the author is a bot account (true/false) |
{author.created_at} | Unix timestamp integer for <t:{author.created_at}:f> or :R formatting |
{author.color} | Author color as a decimal integer (member role color or user accent color) |
{author.age} | Author age when available (e.g. from configured birthday data) |
Member
| Variable | Description |
|---|---|
{member.name} | Member username |
{member.display_name} | Display name (global name or username) |
{member.id} | Member ID |
{member.mention} | Member mention (<@id>) |
{member.avatar} | Member avatar URL |
{member.tag} | username#discriminator (or username for new accounts) |
{member.bot} | Whether the member is a bot account (true/false) |
{member.created_at} | Unix timestamp integer for <t:{member.created_at}:f> or :R formatting |
{member.color} | Member color as a decimal integer (member role color or user accent color) |
{member.age} | Member age when available (e.g. from configured birthday data) |
{member.nick} | Member guild nickname (empty when unset) |
{member.joined_at} | Unix timestamp integer for <t:{member.joined_at}:f> or :R formatting |
{member.guild_avatar} | Guild-specific avatar URL (empty when unset) |
{member.guild_banner} | Guild-specific banner URL (empty when unset) |
{member.pending} | Whether membership screening is pending (true/false) |
Moderator
| Variable | Description |
|---|---|
{mod.name} | Moderator username |
{mod.display_name} | Moderator display name |
{mod.id} | Moderator ID |
{mod.mention} | Moderator mention |
Utility
| Variable | Description |
|---|---|
{newline} | Line break (inserts a newline character) |
{null} | Outputs nothing - use as else branch in {if:...} to suppress the line |
{space} | A literal space character |
Analytics
| Template | Slug | Variable groups |
|---|---|---|
| Leaderboard Post | @analytics.leaderboard.post | Server, Leaderboard, Metrics |
Leaderboard
| Variable | Description |
|---|---|
{leaderboard.metric} | Leaderboard metric label (e.g. Messages Sent) |
{leaderboard.period} | Leaderboard period label (e.g. Every Week) |
{pings.all} | Mentions all users on the leaderboard this run |
{pings.new} | Mentions only users who are new to the leaderboard this run (excludes previous role holders). Requires a leaderboard role to be configured - without one, behaves identically to {pings.all}. |
{leaderboard_image} | Leaderboard image (inserts a MediaGallery component with the chart) |
Metrics
| Variable | Description |
|---|---|
{analytics.messages.1d} | Total messages sent in the last 1 day |
{analytics.messages.7d} | Total messages sent in the last 7 days |
{analytics.messages.30d} | Total messages sent in the last 30 days |
{analytics.voice.1d} | Total voice session hours in the last 1 day |
{analytics.voice.7d} | Total voice session hours in the last 7 days |
{analytics.voice.30d} | Total voice session hours in the last 30 days |
{analytics.reactions.7d} | Total reactions added in the last 7 days |
{analytics.commands.7d} | Total commands used in the last 7 days |
{analytics.invites.30d} | Total successful invites in the last 30 days |
The shared groups (Server) are listed with the common template variables. Every template also takes the Utility variables.
Birthdays
| Template | Slug | Variable groups |
|---|---|---|
| Birthday Announcement | @birthday.announcement | Server, Birthday Member (Member), Birthday Date |
| Birthday Digest | @birthday.bulk_announcement | Server, Bulk Birthday |
Birthday Date
| Variable | Description |
|---|---|
{birthday.date} | Pre-formatted ordinal date, e.g. May 5th. Also usable as {strftime: birthday.date | %B %d} |
{birthday.day} | Numeric day of the month |
{birthday.month} | Numeric month |
{birthday.month_name} | Full month name |
{birthday.year} | Birth year, or empty string if not set |
{birthday.full} | Full date: May 5, 1998, or May 5 if no year |
{birthday.age} | Age in years, or empty string if birth year not set |
{birthday.ordinal} | Ordinal day string, e.g. 5th |
Bulk Birthday
| Variable | Description |
|---|---|
{birthdays.today} | Pre-rendered list of all today's birthdays (one formatted line per person) |
{birthday_count} | Number of members celebrating a birthday today |
The shared groups (Server, Member) are listed with the common template variables. Every template also takes the Utility variables.
Forms
| Template | Slug | Variable groups |
|---|---|---|
| Form - Acceptance Announcement | @form.accept.channel | Form, Author, Server |
| Form - Acceptance DM | @form.accept.dm | Form, Author, Server |
| Form - Submission Announcement | @form.completion.channel | Form, Author, Server |
| Form - Denial DM | @form.deny.dm | Form, Author, Server |
Form
| Variable | Description |
|---|---|
{form.title} | The Form/form title |
{form.slug} | The Form URL slug |
{form.type} | The Form type (general, introduction, application) |
{form.total_responses} | Total number of responses submitted to this form |
{position.title} | Selected position title (application type with positions) |
{position.id} | Selected position ID |
{response.id} | Snowflake ID of the submitted response |
{roles.list} | Comma-separated list of granted role mentions (accept context) |
{denial_reason} | Denial reason (deny context) |
{acceptance_message} | The form's Acceptance Message setting (accept context; empty when unset) |
The shared groups (Author, Server) are listed with the common template variables. Every template also takes the Utility variables.
Levels
| Template | Slug | Variable groups |
|---|---|---|
| Level Up - Announcement Channel | @levels.level_up.channel | Server, Author, Level |
| Level Up - Current Channel | @levels.level_up.current_channel | Server, Author, Level |
| Level Up - DM | @levels.level_up.dm | Server, Author, Level |
Level
| Variable | Description |
|---|---|
{level} | New level reached |
{xp_type} | XP type (text or voice) |
The shared groups (Server, Author) are listed with the common template variables. Every template also takes the Utility variables.
Moderation
| Template | Slug | Variable groups |
|---|---|---|
| Appeal Denial DM | @appeals.denial.dm | Author, Server, Appeal |
| Ban Confirmation | @mod.ban.confirm | Author, Server, Moderator, Action |
| Ban DM | @mod.ban.dm | Author, Server, Moderator, Action (Ban DM) |
| Infraction DM | @mod.infraction.dm | Author, Server, Action (Infraction DM) |
| Kick Confirmation | @mod.kick.confirm | Author, Server, Moderator, Action |
| Kick DM | @mod.kick.dm | Author, Server, Moderator, Action |
| Timeout Confirmation | @mod.timeout.confirm | Author, Server, Moderator, Action |
| Timeout DM | @mod.timeout.dm | Author, Server, Moderator, Action |
| Warning Confirmation | @mod.warn.confirm | Author, Server, Moderator, Action |
| Warning DM | @mod.warn.dm | Author, Server, Moderator, Action |
Appeal
| Variable | Description |
|---|---|
{denial_reason} | Appeal denial reason |
{ban_reason} | Original ban reason |
{appeal_url} | URL to the ban appeal form (empty if not configured) |
Action
| Variable | Description |
|---|---|
{reason} | Action reason |
{action} | Action name (Ban, Kick, Timeout, Warn) |
{case_id} | Moderation case number |
{case_url} | Jump link to the case log entry (empty if no log channel configured) |
{duration} | Action duration (e.g. 1h30m) |
{expires} | Discord relative timestamp when action expires |
Action (Ban DM)
| Variable | Description |
|---|---|
{reason} | Action reason |
{action} | Action name (Ban, Kick, Timeout, Warn) |
{case_id} | Moderation case number |
{case_url} | Jump link to the case log entry (empty if no log channel configured) |
{duration} | Action duration (e.g. 1h30m) |
{expires} | Discord relative timestamp when action expires |
{appeal_url} | URL to the ban appeal form (empty if not configured) |
Action (Infraction DM)
| Variable | Description |
|---|---|
{reason} | Action reason |
{action} | Action name (Ban, Kick, Timeout, Warn) |
{case_id} | Moderation case number |
{case_url} | Jump link to the case log entry (empty if no log channel configured) |
{duration} | Action duration (e.g. 1h30m) |
{expires} | Discord relative timestamp when action expires |
{points} | Current infraction point total |
{threshold} | Threshold that was reached |
The shared groups (Author, Server, Moderator) are listed with the common template variables. Every template also takes the Utility variables.
Utility
| Template | Slug | Variable groups |
|---|---|---|
| Ping Response | @command.ping | Latency, Server, Invoker (Author) |
Latency
| Variable | Description |
|---|---|
{latency_ms} | How long the bot took to answer the command, in ms |
The shared groups (Server, Author) are listed with the common template variables. Every template also takes the Utility variables.
Welcomer
| Template | Slug | Variable groups |
|---|---|---|
| Welcome Message | @welcomer.join | Member, Server |
| Welcome DM | @welcomer.join_dm | Member (Welcome DM), Server |
| Goodbye Message | @welcomer.leave | Member (Goodbye Message), Server |
Member
| Variable | Description |
|---|---|
{member.name} | Member username |
{member.display_name} | Display name (global name or username) |
{member.id} | Member ID |
{member.mention} | Member mention (<@id>) |
{member.avatar} | Member avatar URL |
{member.tag} | username#discriminator (or username for new accounts) |
{member.bot} | Whether the member is a bot account (true/false) |
{member.created_at} | Unix timestamp integer for <t:{member.created_at}:f> or :R formatting |
{member.color} | Member color as a decimal integer (member role color or user accent color) |
{member.age} | Member age when available (e.g. from configured birthday data) |
{member.nick} | Member guild nickname (empty when unset) |
{member.joined_at} | Unix timestamp integer for <t:{member.joined_at}:f> or :R formatting |
{member.guild_avatar} | Guild-specific avatar URL (empty when unset) |
{member.guild_banner} | Guild-specific banner URL (empty when unset) |
{member.pending} | Whether membership screening is pending (true/false) |
{user.join_position} | Member join position (numeric) |
{join_image} | Attachment URL of the generated welcome image |
Member (Welcome DM)
| Variable | Description |
|---|---|
{member.name} | Member username |
{member.display_name} | Display name (global name or username) |
{member.id} | Member ID |
{member.mention} | Member mention (<@id>) |
{member.avatar} | Member avatar URL |
{member.tag} | username#discriminator (or username for new accounts) |
{member.bot} | Whether the member is a bot account (true/false) |
{member.created_at} | Unix timestamp integer for <t:{member.created_at}:f> or :R formatting |
{member.color} | Member color as a decimal integer (member role color or user accent color) |
{member.age} | Member age when available (e.g. from configured birthday data) |
{member.nick} | Member guild nickname (empty when unset) |
{member.joined_at} | Unix timestamp integer for <t:{member.joined_at}:f> or :R formatting |
{member.guild_avatar} | Guild-specific avatar URL (empty when unset) |
{member.guild_banner} | Guild-specific banner URL (empty when unset) |
{member.pending} | Whether membership screening is pending (true/false) |
{user.join_position} | Member join position (numeric) |
Member (Goodbye Message)
| Variable | Description |
|---|---|
{member.name} | Member username |
{member.display_name} | Display name (global name or username) |
{member.id} | Member ID |
{member.mention} | Member mention (<@id>) |
{member.avatar} | Member avatar URL |
{member.tag} | username#discriminator (or username for new accounts) |
{member.bot} | Whether the member is a bot account (true/false) |
{member.created_at} | Unix timestamp integer for <t:{member.created_at}:f> or :R formatting |
{member.color} | Member color as a decimal integer (member role color or user accent color) |
{member.age} | Member age when available (e.g. from configured birthday data) |
{member.nick} | Member guild nickname (empty when unset) |
{member.joined_at} | Unix timestamp integer for <t:{member.joined_at}:f> or :R formatting |
{member.guild_avatar} | Guild-specific avatar URL (empty when unset) |
{member.guild_banner} | Guild-specific banner URL (empty when unset) |
{member.pending} | Whether membership screening is pending (true/false) |
{joined.at} | Discord relative timestamp of when they joined |
{leave_image} | Attachment URL of the generated goodbye image |
The shared groups (Server) are listed with the common template variables. Every template also takes the Utility variables.
Feeds
| Template | Slug | Variable groups |
|---|---|---|
| Bluesky Post | @feeds.bluesky | Post, Source (Bluesky Post, Instagram Post, X (Twitter) Post), Server |
| Instagram Post | @feeds.instagram | Post (Instagram Post), Source (Bluesky Post, Instagram Post, X (Twitter) Post), Server |
| Kick Stream | @feeds.kick | Post (Kick Stream), Source, Server |
| Kick Clip | @feeds.kick.clips | Post (Kick Clip), Source, Server |
| Podcast Episode | @feeds.podcast | Post (Podcast Episode), Source (Podcast Episode), Server |
| Reddit Post | @feeds.reddit | Post (Reddit Post), Source (Reddit Post), Server |
| RSS Post | @feeds.rss | Post (RSS Post), Source (RSS Post), Server |
| TikTok Video | @feeds.tiktok | Post (TikTok Video), Source (TikTok Video), Server |
| Twitch Stream | @feeds.twitch | Post (Twitch Stream), Source, Server |
| Twitch Clip | @feeds.twitch.clips | Post (Twitch Clip), Source, Server |
| X (Twitter) Post | @feeds.x | Post (X (Twitter) Post), Source (Bluesky Post, Instagram Post, X (Twitter) Post), Server |
| YouTube Video | @feeds.youtube | Post (YouTube Video), Source (YouTube Video), Server |
Post
| Variable | Description |
|---|---|
{post.title} | Post text (first 100 chars) |
{post.url} | Post URL |
{post.description} | Full post text |
{post.author} | Author display name |
{post.author_url} | Author profile URL |
{post.image_url} | First post image URL |
{post.thumbnail_url} | First post thumbnail URL |
{post.gallery_urls} | All image URLs, one per line, for a MediaGallery (one for a single image) |
{post.published_at} | Unix timestamp |
{post.published_at_iso} | ISO 8601 publish time |
{post.handle} | Author @handle |
{post.likes} | Like count |
{post.reposts} | Repost count |
{post.replies} | Reply count |
Source (Bluesky Post, Instagram Post, X (Twitter) Post)
| Variable | Description |
|---|---|
{source.name} | Account display name |
{source.url} | Profile URL |
{source.platform} | Platform name |
{source.icon_url} | Avatar URL |
Post (Instagram Post)
| Variable | Description |
|---|---|
{post.title} | Post caption (first 100 chars) |
{post.url} | Post URL |
{post.description} | Full post caption |
{post.author} | Account display name |
{post.author_url} | Profile URL |
{post.image_url} | Post image URL |
{post.thumbnail_url} | Post thumbnail URL |
{post.gallery_urls} | All image URLs, one per line, for a MediaGallery (one for a single image) |
{post.published_at} | Unix timestamp |
{post.published_at_iso} | ISO 8601 publish time |
{post.shortcode} | Post shortcode |
{post.handle} | @handle |
{post.media_type} | Media type |
Post (Kick Stream)
| Variable | Description |
|---|---|
{post.title} | Stream or clip title |
{post.url} | Stream or clip URL |
{post.description} | The title again (Kick has no description) |
{post.author} | Channel slug |
{post.author_url} | Channel URL |
{post.image_url} | Stream or clip thumbnail URL |
{post.thumbnail_url} | Stream or clip thumbnail URL |
{post.gallery_urls} | All image URLs, one per line, for a MediaGallery (one for a single image) |
{post.published_at} | Unix timestamp |
{post.published_at_iso} | ISO 8601 publish time |
{post.game} | Stream category |
{post.viewer_count} | Viewer count |
{post.is_live} | Whether live (Yes or No) |
{post.stream_preview_url} | Live stream thumbnail URL |
Source
| Variable | Description |
|---|---|
{source.name} | Channel name |
{source.url} | Channel URL |
{source.platform} | Platform name |
{source.icon_url} | Channel avatar URL |
Post (Kick Clip)
| Variable | Description |
|---|---|
{post.title} | Stream or clip title |
{post.url} | Stream or clip URL |
{post.description} | The title again (Kick has no description) |
{post.author} | Channel slug |
{post.author_url} | Channel URL |
{post.image_url} | Stream or clip thumbnail URL |
{post.thumbnail_url} | Stream or clip thumbnail URL |
{post.gallery_urls} | All image URLs, one per line, for a MediaGallery (one for a single image) |
{post.published_at} | Unix timestamp |
{post.published_at_iso} | ISO 8601 publish time |
{post.game} | Stream category |
{post.clip_duration} | Clip duration (clips subscriptions only; empty for live) |
{post.clip_views} | Clip view count (clips subscriptions only; empty for live) |
Post (Podcast Episode)
| Variable | Description |
|---|---|
{post.title} | Episode title |
{post.url} | Episode URL |
{post.description} | Episode summary |
{post.author} | Host/author name |
{post.author_url} | Author URL |
{post.image_url} | Episode artwork URL |
{post.thumbnail_url} | Episode artwork URL |
{post.gallery_urls} | All image URLs, one per line, for a MediaGallery (one for a single image) |
{post.published_at} | Unix timestamp |
{post.published_at_iso} | ISO 8601 publish time |
{post.audio_url} | Episode MP3 / audio file URL (from <enclosure>) |
{post.duration} | Episode duration |
{post.episode} | Episode number |
{post.season} | Season number |
Source (Podcast Episode)
| Variable | Description |
|---|---|
{source.name} | Podcast name |
{source.url} | Podcast URL |
{source.platform} | Platform name |
{source.icon_url} | Podcast artwork URL |
Post (Reddit Post)
| Variable | Description |
|---|---|
{post.title} | Post title |
{post.url} | Post permalink (comments page URL) |
{post.description} | Post body text (self-posts only; empty for link/image posts) |
{post.author} | Author with u/ prefix |
{post.author_url} | Author profile URL |
{post.image_url} | First media URL |
{post.thumbnail_url} | First media thumbnail URL |
{post.gallery_urls} | All media URLs (newline-separated; use in MediaGallery for galleries) |
{post.published_at} | Unix timestamp |
{post.published_at_iso} | ISO 8601 publish time |
{post.id} | Reddit post ID (without t3_ prefix) |
{post.author_name} | Author username (no prefix) |
{post.score} | Upvote count |
{post.comments} | Comment count |
{post.media_type} | Media type: image / gallery / video / third-party / text |
{post.subreddit} | Subreddit with r/ prefix |
{post.subreddit_name} | Subreddit name without r/ prefix |
{post.subreddit_url} | Subreddit URL |
{post.subreddit_icon} | Subreddit community icon URL |
{post.subreddit_members} | Subreddit subscriber count (if available) |
{post.flair} | Post flair text (empty if none) |
{post.domain} | Link domain for link posts; self.<subreddit> for self-posts |
{post.external_url} | External link URL for link posts; empty for self/image posts |
Source (Reddit Post)
| Variable | Description |
|---|---|
{source.name} | Subreddit name |
{source.url} | Subreddit URL |
{source.platform} | Platform name |
{source.icon_url} | Subreddit icon URL |
Post (RSS Post)
| Variable | Description |
|---|---|
{post.title} | Post title |
{post.url} | Post URL |
{post.description} | Post description or summary |
{post.author} | Post author name |
{post.author_url} | Post author profile URL |
{post.image_url} | Full-size image URL |
{post.thumbnail_url} | Thumbnail image URL |
{post.gallery_urls} | All image URLs, one per line, for a MediaGallery (one for a single image) |
{post.published_at} | Unix timestamp |
{post.published_at_iso} | ISO 8601 publish time |
Source (RSS Post)
| Variable | Description |
|---|---|
{source.name} | Feed/channel name |
{source.url} | Source website URL |
{source.platform} | Platform name |
{source.icon_url} | Source icon URL |
Post (TikTok Video)
| Variable | Description |
|---|---|
{post.title} | Video caption (first 100 chars) |
{post.url} | Video URL |
{post.description} | Full video caption |
{post.author} | Creator name |
{post.author_url} | Profile URL |
{post.image_url} | Video thumbnail URL |
{post.thumbnail_url} | Video thumbnail URL |
{post.gallery_urls} | All image URLs, one per line, for a MediaGallery (one for a single image) |
{post.published_at} | Unix timestamp |
{post.published_at_iso} | ISO 8601 publish time |
{post.video_id} | TikTok video ID |
{post.handle} | @handle |
Source (TikTok Video)
| Variable | Description |
|---|---|
{source.name} | Creator name |
{source.url} | Profile URL |
{source.platform} | Platform name |
{source.icon_url} | Avatar URL |
Post (Twitch Stream)
| Variable | Description |
|---|---|
{post.title} | Stream or clip title |
{post.url} | Stream or clip URL |
{post.description} | The title again (Twitch has no description) |
{post.author} | Streamer name |
{post.author_url} | Channel URL |
{post.image_url} | Stream or clip thumbnail URL |
{post.thumbnail_url} | Stream or clip thumbnail URL |
{post.gallery_urls} | All image URLs, one per line, for a MediaGallery (one for a single image) |
{post.published_at} | Unix timestamp |
{post.published_at_iso} | ISO 8601 publish time |
{post.game} | Game or category |
{post.viewer_count} | Viewer count |
{post.is_live} | Whether live (Yes or No) |
{post.stream_preview_url} | Live stream preview image (1920x1080, cache-busted) |
Post (Twitch Clip)
| Variable | Description |
|---|---|
{post.title} | Stream or clip title |
{post.url} | Stream or clip URL |
{post.description} | The title again (Twitch has no description) |
{post.author} | Streamer name |
{post.author_url} | Channel URL |
{post.image_url} | Stream or clip thumbnail URL |
{post.thumbnail_url} | Stream or clip thumbnail URL |
{post.gallery_urls} | All image URLs, one per line, for a MediaGallery (one for a single image) |
{post.published_at} | Unix timestamp |
{post.published_at_iso} | ISO 8601 publish time |
{post.game} | Game or category |
{post.duration} | Clip duration (empty for live) |
{post.clip_duration} | Clip duration (clips subscriptions only; empty for live) |
{post.clip_views} | Clip view count (clips subscriptions only; empty for live) |
{post.clip_creator} | Username who created the clip (clips subscriptions only) |
Post (X (Twitter) Post)
| Variable | Description |
|---|---|
{post.title} | Tweet text (first 100 chars) |
{post.url} | Tweet URL |
{post.description} | Full tweet text |
{post.author} | Display name |
{post.author_url} | Profile URL |
{post.image_url} | Tweet image URL |
{post.thumbnail_url} | Tweet thumbnail URL |
{post.gallery_urls} | All image URLs, one per line, for a MediaGallery (one for a single image) |
{post.published_at} | Unix timestamp |
{post.published_at_iso} | ISO 8601 publish time |
{post.handle} | @handle |
{post.likes} | Like count |
{post.retweets} | Retweet count |
{post.replies} | Reply count |
{post.bookmarks} | Bookmark count |
Post (YouTube Video)
| Variable | Description |
|---|---|
{post.title} | Video title |
{post.url} | Video URL |
{post.description} | Video description |
{post.author} | Channel name |
{post.author_url} | Channel URL |
{post.image_url} | Thumbnail URL |
{post.thumbnail_url} | Thumbnail URL |
{post.gallery_urls} | All image URLs, one per line, for a MediaGallery (one for a single image) |
{post.published_at} | Unix timestamp |
{post.published_at_iso} | ISO 8601 publish time |
{post.video_id} | YouTube video ID |
{post.channel_id} | YouTube channel ID |
{post.channel_icon_url} | Channel icon/avatar URL |
Source (YouTube Video)
| Variable | Description |
|---|---|
{source.name} | Channel name |
{source.url} | Channel URL |
{source.platform} | Platform name |
{source.icon_url} | Channel icon URL |
The shared groups (Server) are listed with the common template variables. Every template also takes the Utility variables.
Mod Logs
| Template | Slug | Variable groups |
|---|---|---|
| Mod Log - Bot Alert | @modlog.bot.alert | Server, Alert, Channel, Item, Timestamp |
| Mod Log - Automation Rule Fired | @modlog.bot.automations | Server, Rule, Trigger, Conditions, Actions, Match, Timestamp |
| Mod Log - Bot Command Used | @modlog.bot.command | Server, User, Timestamp, Channel, Command |
| Mod Log - DM Failed | @modlog.bot.dm_failed | Server, User, Timestamp, DM Info |
| Mod Log - Bot Added | @modlog.guild.bot_add | Server, Moderator, Bot, Timestamp |
| Mod Log - Channel Created | @modlog.guild.channel_create | Server, Channel, Moderator, Timestamp |
| Mod Log - Channel Deleted | @modlog.guild.channel_delete | Server, Channel, Moderator, Timestamp |
| Mod Log - Channel Updated | @modlog.guild.channel_update | Server, Channel (Mod Log - Channel Updated), Moderator, Timestamp |
| Mod Log - Emoji Added | @modlog.guild.emoji_create | Server, Emoji, Moderator, Timestamp |
| Mod Log - Emoji Removed | @modlog.guild.emoji_delete | Server, Emoji, Moderator, Timestamp |
| Mod Log - Emoji Updated | @modlog.guild.emoji_update | Server, Emoji (Mod Log - Emoji Updated), Moderator, Timestamp |
| Mod Log - Invite Created | @modlog.guild.invite_create | Server, Moderator, Invite, Timestamp |
| Mod Log - Invite Deleted | @modlog.guild.invite_delete | Server, Moderator, Invite (Mod Log - Invite Deleted), Timestamp |
| Mod Log - Members Pruned | @modlog.guild.prune | Server, Moderator, Prune, Timestamp |
| Mod Log - Role Created | @modlog.guild.role_create | Server, Role, Moderator, Timestamp |
| Mod Log - Role Deleted | @modlog.guild.role_delete | Server, Role, Moderator, Timestamp |
| Mod Log - Role Updated | @modlog.guild.role_update | Server, Role (Mod Log - Role Updated), Moderator, Timestamp |
| Mod Log - Sticker Added | @modlog.guild.sticker_create | Server, Sticker, Moderator, Timestamp |
| Mod Log - Sticker Removed | @modlog.guild.sticker_delete | Server, Sticker, Moderator, Timestamp |
| Mod Log - Sticker Updated | @modlog.guild.sticker_update | Server, Sticker (Mod Log - Sticker Updated), Moderator, Timestamp |
| Mod Log - Thread Created | @modlog.guild.thread_create | Server, Thread, Moderator, Timestamp |
| Mod Log - Thread Deleted | @modlog.guild.thread_delete | Server, Thread, Moderator, Timestamp |
| Mod Log - Thread Updated | @modlog.guild.thread_update | Server, Thread (Mod Log - Thread Updated), Moderator, Timestamp |
| Mod Log - Server Updated | @modlog.guild.update | Server, Moderator, Changes, Timestamp |
| Mod Log - Webhook Created | @modlog.guild.webhook_create | Server, Webhook, Moderator, Timestamp |
| Mod Log - Webhook Deleted | @modlog.guild.webhook_delete | Server, Webhook (Mod Log - Webhook Deleted), Moderator, Timestamp |
| Mod Log - Server Avatar Changed | @modlog.member.avatar | Server, User, Timestamp, Avatar |
| Mod Log - Member Joined | @modlog.member.join | Server, User, Timestamp, Join Info, Invite (Mod Log - Member Joined), Inviter |
| Mod Log - Member Joined with Prior Cases | @modlog.member.joined_with_cases | Server, User, Timestamp, Case Info |
| Mod Log - Member Left | @modlog.member.leave | Server, User, Timestamp, Leave Info |
| Mod Log - Nickname Changed | @modlog.member.nick_change | Server, User, Timestamp, Nickname |
| Mod Log - Member Data Restored | @modlog.member.restore | Server, User, Timestamp, Restore Info |
| Mod Log - Role Added to Member | @modlog.member.role_add | Server, User, Timestamp, Role, Moderator |
| Mod Log - Member Roles Changed | @modlog.member.role_changes | Server, User, Timestamp, Role Changes, Moderator |
| Mod Log - Role Removed from Member | @modlog.member.role_remove | Server, User, Timestamp, Role, Moderator |
| Mod Log - Username Changed | @modlog.member.username_change | Server, User, Timestamp, Username |
| Mod Log - Bulk Message Delete | @modlog.message.bulk_delete | Server, Moderator, Channel, Action, Timestamp |
| Mod Log - Message Deleted | @modlog.message.delete | Server, User, Timestamp, Channel, Message |
| Mod Log - Message Auto-Deleted | @modlog.message.delete_auto | Server, User, Timestamp, Channel, Message |
| Mod Log - Message Deleted (No Cache) | @modlog.message.delete_bare | Server, User, Moderator, Channel, Message, Timestamp |
| Mod Log - Message Edited | @modlog.message.edit | Server, User, Timestamp, Channel, Message (Mod Log - Message Edited) |
| Mod Log - Message Pinned | @modlog.message.pin | Server, Moderator, Channel, Message (Mod Log - Message Pinned), Timestamp |
| Mod Log - Message Unpinned | @modlog.message.unpin | Server, Moderator, Channel, Message (Mod Log - Message Unpinned), Timestamp |
| Mod Log - Anti-Raid Level Auto-Changed | @modlog.mod.antiraid_auto | Server, Action (Mod Log - Anti-Raid Level Auto-Changed), Timestamp |
| Mod Log - Anti-Raid Level Set by Staff | @modlog.mod.antiraid_user | Server, Moderator, Action (Mod Log - Anti-Raid Level Set by Staff), Timestamp |
| Mod Log - AutoMod Action | @modlog.mod.automod | Server, User, Moderator, Case, Timestamp |
| Mod Log - Ban | @modlog.mod.ban | Server, User, Moderator, Case, Timestamp |
| Mod Log - Case Created | @modlog.mod.case_create | Server, User, Moderator, Case, Timestamp |
| Mod Log - Case Deleted | @modlog.mod.case_delete | Server, User, Moderator, Case, Timestamp |
| Mod Log - Case Updated | @modlog.mod.case_update | Server, User, Moderator, Case (Mod Log - Case Updated), Timestamp |
| Mod Log - Message Censored | @modlog.mod.censor | Server, User, Timestamp, Channel, Message |
| Mod Log - Channel Clean | @modlog.mod.clean | Server, Moderator, Channel, Action (Mod Log - Channel Clean), Timestamp |
| Mod Log - Force Ban | @modlog.mod.forceban | Server, User, Moderator, Case, Timestamp |
| Mod Log - Kick | @modlog.mod.kick | Server, User, Moderator, Case, Timestamp |
| Mod Log - Mass Ban | @modlog.mod.massban | Server, Moderator, Action (Mod Log - Mass Ban), Timestamp |
| Mod Log - Mass Mute | @modlog.mod.massmute | Server, Moderator, Action (Mod Log - Mass Mute), Timestamp |
| Mod Log - Mass Unban | @modlog.mod.massunban | Server, Moderator, Action (Mod Log - Mass Unban), Timestamp |
| Mod Log - Message Spam | @modlog.mod.message_spam | Server, User, Moderator, Case (Mod Log - Message Spam), Timestamp |
| Mod Log - Mute | @modlog.mod.mute | Server, User, Moderator, Case, Timestamp |
| Mod Log - Mute Expired | @modlog.mod.mute_expired | Server, User, Timestamp, Case (Mod Log - Mute Expired, Mod Log - Mute on Rejoin) |
| Mod Log - Mute on Rejoin | @modlog.mod.mute_rejoin | Server, User, Timestamp, Case (Mod Log - Mute Expired, Mod Log - Mute on Rejoin) |
| Mod Log - Note | @modlog.mod.note | Server, User, Moderator, Case, Timestamp |
| Mod Log - Spam Detected | @modlog.mod.other_spam | Server, User, Moderator, Case (Mod Log - Spam Detected), Timestamp |
| Mod Log - Soft Ban | @modlog.mod.softban | Server, User, Moderator, Case, Timestamp |
| Mod Log - Timed Ban | @modlog.mod.timed_ban | Server, User, Moderator, Case, Timestamp |
| Mod Log - Timed Mute | @modlog.mod.timed_mute | Server, User, Moderator, Case, Timestamp |
| Mod Log - Temp Ban Removed | @modlog.mod.timed_unban | Server, User, Moderator, Case, Timestamp |
| Mod Log - Timed Unmute | @modlog.mod.timed_unmute | Server, User, Moderator, Case, Timestamp |
| Mod Log - Unban | @modlog.mod.unban | Server, User, Moderator, Case, Timestamp |
| Mod Log - Unmute | @modlog.mod.unmute | Server, User, Moderator, Case, Timestamp |
| Mod Log - Warning | @modlog.mod.warn | Server, User, Moderator, Case, Timestamp |
| Mod Log - Force Voice Disconnect | @modlog.voice.force_disconnect | Server, User, Timestamp, Channel, Moderator |
| Mod Log - Force Voice Move | @modlog.voice.force_move | Server, User, Timestamp, Voice, Moderator |
| Mod Log - Voice Channel Join | @modlog.voice.join | Server, User, Timestamp, Channel |
| Mod Log - Voice Channel Leave | @modlog.voice.leave | Server, User, Timestamp, Channel |
| Mod Log - Voice Channel Move | @modlog.voice.move | Server, User, Timestamp, Voice |
| Mod Log - Stage Instance Created | @modlog.voice.stage_create | Server, Stage, Moderator, Timestamp |
| Mod Log - Stage Instance Ended | @modlog.voice.stage_delete | Server, Stage, Moderator, Timestamp |
| Mod Log - Stage Instance Updated | @modlog.voice.stage_update | Server, Stage (Mod Log - Stage Instance Updated), Moderator, Timestamp |
Alert
| Variable | Description |
|---|---|
{alert.message} | Alert message content |
{alert.level} | Alert level (info, warning, error) |
{alert.source} | Module or subsystem that raised the alert (e.g. sticky, automations) |
{alert.detail} | Additional detail text (empty if not provided) |
Channel
| Variable | Description |
|---|---|
{channel.mention} | Channel mention (#name) |
{channel.name} | Channel name |
{channel.id} | Channel ID |
{channel.type} | Channel type (text, voice, thread, forum, stage, etc.) |
Item
| Variable | Description |
|---|---|
{alert.item.type} | Type label for the affected item (e.g. Sticky, Template, Rule) |
{alert.item.id} | ID of the affected item (empty if not applicable) |
Timestamp
| Variable | Description |
|---|---|
{timestamp} | Unix timestamp integer - use as <t:{timestamp}:f>, <t:{timestamp}:R>, etc. |
Rule
| Variable | Description |
|---|---|
{rule.id} | Rule ID |
{rule.name} | Rule name |
{rule.description} | Rule description (empty if not set) |
Trigger
| Variable | Description |
|---|---|
{trigger.type} | Raw trigger type key (e.g. on_member_join) |
{trigger.label} | Human-readable trigger description |
{trigger.user.id} | ID of the user who triggered the rule (empty if none) |
{trigger.user.mention} | Mention of the user who triggered the rule |
{trigger.user.name} | Username of the triggering user |
{trigger.user.display_name} | Display name of the triggering user |
{trigger.channel.id} | Channel ID where the trigger fired (empty if none) |
{trigger.channel.mention} | Mention of the channel where the trigger fired |
{trigger.channel.name} | Name of the channel where the trigger fired |
{trigger.message.id} | ID of the triggering message (empty if not a message trigger) |
{trigger.message.content} | Content of the triggering message, up to 500 characters |
{trigger.message.jump_url} | Jump link to the triggering message |
Conditions
| Variable | Description |
|---|---|
{conditions.result} | Condition check result (always 'passed' at fire time) |
{conditions.total} | Total number of conditions configured on the rule |
Actions
| Variable | Description |
|---|---|
{actions.status} | Overall action result: success, partial, or failed |
{actions.run} | Number of actions that succeeded |
{actions.total} | Total number of actions configured on the rule |
{actions.summary} | The rule's actions, comma separated |
{actions.failed} | The actions that failed, each with why (empty when all succeeded) |
{actions.failed_count} | How many actions failed (empty when none did) |
Match
| Variable | Description |
|---|---|
{match.summary} | What the conditions (or the spam threshold) matched, on one line (empty when nothing was recorded) |
User
| Variable | Description |
|---|---|
{user.mention} | User mention (<@id>) |
{user.name} | Username |
{user.display_name} | Display name (nickname or username) |
{user.tag} | username#discriminator (or just username) |
{user.id} | User ID |
{user.avatar} | User avatar URL |
{user.roles} | Comma-separated role mentions (empty if @everyone only). Supports {join:} list syntax. |
{user.top_role} | Highest role mention (empty if no extra roles) |
{user.top_role_name} | Highest role name (empty if no extra roles) |
Command
| Variable | Description |
|---|---|
{command.name} | Command name (without /) |
{command.args} | Command arguments summary |
DM Info
| Variable | Description |
|---|---|
{dm.context} | Context for what DM was attempted (e.g. ban notification) |
Moderator
| Variable | Description |
|---|---|
{mod.mention} | Moderator mention |
{mod.name} | Moderator username |
{mod.display_name} | Moderator display name |
{mod.tag} | Moderator username#discriminator or username |
{mod.id} | Moderator ID |
{mod.roles} | Moderator comma-separated role mentions. Supports {join:} list syntax. |
{mod.top_role} | Moderator highest role mention |
{mod.top_role_name} | Moderator highest role name |
Bot
| Variable | Description |
|---|---|
{bot.mention} | Bot mention |
{bot.name} | Bot username |
{bot.display_name} | Bot display name |
{bot.id} | Bot user ID |
{bot.tag} | Bot username#discriminator or username |
Channel (Mod Log - Channel Updated)
| Variable | Description |
|---|---|
{channel.mention} | Channel mention (#name) |
{channel.name} | Channel name |
{channel.id} | Channel ID |
{channel.type} | Channel type (text, voice, thread, forum, stage, etc.) |
{before.name} | Previous channel name |
{after.name} | Updated channel name |
{before.topic} | Previous channel topic |
{after.topic} | Updated channel topic |
Emoji
| Variable | Description |
|---|---|
{entity.name} | Entity name (emoji, sticker, etc.) |
{entity.id} | Entity ID |
Emoji (Mod Log - Emoji Updated)
| Variable | Description |
|---|---|
{entity.name} | Entity name (emoji, sticker, etc.) |
{entity.id} | Entity ID |
{before.name} | Previous emoji name |
{after.name} | Updated emoji name |
Invite
| Variable | Description |
|---|---|
{invite.code} | Invite code |
{invite.channel} | Invite channel mention |
{invite.channel_name} | Invite channel name |
{invite.max_uses} | Max uses (∞ if unlimited) |
{invite.max_age} | Expiry duration (never if permanent) |
{invite.is_temporary} | Whether invite grants temporary membership (yes/no) |
Invite (Mod Log - Invite Deleted)
| Variable | Description |
|---|---|
{invite.code} | Invite code |
{invite.channel} | Invite channel mention |
{invite.channel_name} | Invite channel name |
Prune
| Variable | Description |
|---|---|
{count} | Number of members pruned |
{days} | Inactivity threshold in days |
Role
| Variable | Description |
|---|---|
{role.mention} | Role mention (<@&id>) |
{role.name} | Role name |
{role.id} | Role ID |
{role.color} | Role color as hex string (e.g. #5865F2) |
{role.position} | Role position index (higher = more powerful) |
Role (Mod Log - Role Updated)
| Variable | Description |
|---|---|
{role.mention} | Role mention (<@&id>) |
{role.name} | Role name |
{role.id} | Role ID |
{role.color} | Role color as hex string (e.g. #5865F2) |
{role.position} | Role position index (higher = more powerful) |
{before.name} | Previous role name |
{after.name} | Updated role name |
{before.color} | Previous role color |
{after.color} | Updated role color |
Sticker
| Variable | Description |
|---|---|
{entity.name} | Entity name (emoji, sticker, etc.) |
{entity.id} | Entity ID |
Sticker (Mod Log - Sticker Updated)
| Variable | Description |
|---|---|
{entity.name} | Entity name (emoji, sticker, etc.) |
{entity.id} | Entity ID |
{before.name} | Previous sticker name |
{after.name} | Updated sticker name |
Thread
| Variable | Description |
|---|---|
{channel.mention} | Channel mention (#name) |
{channel.name} | Channel name |
{channel.id} | Channel ID |
{channel.type} | Channel type (text, voice, thread, forum, stage, etc.) |
{thread.parent} | Parent channel mention |
Thread (Mod Log - Thread Updated)
| Variable | Description |
|---|---|
{channel.mention} | Channel mention (#name) |
{channel.name} | Channel name |
{channel.id} | Channel ID |
{channel.type} | Channel type (text, voice, thread, forum, stage, etc.) |
{before.name} | Previous thread name |
{after.name} | Updated thread name |
{before.archived} | Was thread archived before? (yes = archived, empty = not) |
{after.archived} | Is thread archived now? (yes = archived, empty = not) |
{before.locked} | Was thread locked before? (yes = locked, empty = not) |
{after.locked} | Is thread locked now? (yes = locked, empty = not) |
{before.slowmode} | Slowmode delay in seconds before the update |
{after.slowmode} | Slowmode delay in seconds after the update |
{before.auto_archive} | Auto-archive duration in minutes before the update (60/1440/4320/10080) |
{after.auto_archive} | Auto-archive duration in minutes after the update (60/1440/4320/10080) |
{before.invitable} | Could non-moderators invite others before? (yes = invitable, empty = not) |
{after.invitable} | Can non-moderators invite others now? (yes = invitable, empty = not) |
Changes
| Variable | Description |
|---|---|
{changed_fields} | Comma-separated list of changed fields |
{before.name} | Previous server name |
{after.name} | Updated server name |
{before.description} | Previous server description |
{after.description} | Updated server description |
{before.verification_level} | Previous verification level |
{after.verification_level} | Updated verification level |
Webhook
| Variable | Description |
|---|---|
{webhook.name} | Webhook name |
{webhook.id} | Webhook ID |
{channel.mention} | Channel the webhook is in |
{channel.name} | Channel name |
Webhook (Mod Log - Webhook Deleted)
| Variable | Description |
|---|---|
{webhook.name} | Webhook name |
{webhook.id} | Webhook ID |
{channel.mention} | Channel the webhook was in |
{channel.name} | Channel name |
Avatar
| Variable | Description |
|---|---|
{before.avatar} | Previous guild avatar URL (empty if none) |
{after.avatar} | New guild avatar URL (empty if removed) |
Join Info
| Variable | Description |
|---|---|
{account.age} | Account age at join time (e.g. 2d 5h) |
{account.created_at} | Account creation Unix timestamp - use with Discord timestamp syntax, e.g. <t:{account.created_at}:R> |
{join.position} | Member join position (e.g. 1,234th member) |
Invite (Mod Log - Member Joined)
| Variable | Description |
|---|---|
{invite.code} | Invite code used to join (empty if unknown) |
{invite.uses} | Total uses of the invite after this join |
{invite.max_uses} | Max uses allowed (∞ if unlimited) |
{invite.channel} | Channel the invite points to (mention) |
{invite.channel_name} | Channel name the invite points to |
{invite.is_vanity} | Whether the invite is a vanity URL (yes/no) |
Inviter
| Variable | Description |
|---|---|
{inviter.mention} | Mention of the user who created the invite |
{inviter.name} | Username of the invite creator |
{inviter.display_name} | Display name of the invite creator |
{inviter.id} | User ID of the invite creator |
Case Info
| Variable | Description |
|---|---|
{case_count} | Number of prior moderation cases |
Leave Info
| Variable | Description |
|---|---|
{joined.at} | When member joined (Discord timestamp) |
Nickname
| Variable | Description |
|---|---|
{before.nick} | Previous nickname (empty if none) |
{after.nick} | New nickname (empty if cleared) |
Restore Info
| Variable | Description |
|---|---|
{restored.roles} | Roles restored on rejoin |
Role Changes
| Variable | Description |
|---|---|
{added_roles} | Comma-separated added role mentions (empty if none). Supports {join:} list syntax. |
{removed_roles} | Comma-separated removed role mentions (empty if none). Supports {join:} list syntax. |
Username
| Variable | Description |
|---|---|
{before.name} | Previous username |
{after.name} | New username |
{before.global_name} | Previous display name |
{after.global_name} | New display name |
Action
| Variable | Description |
|---|---|
{count} | Number of messages deleted |
{bulk_messages_file} | File attachment reference for the deleted messages log |
{bulk_messages_link} | Link to the web archive of the deleted messages |
Message
| Variable | Description |
|---|---|
{message.id} | Message ID |
{message.content} | Message content (empty if not cached) |
{message.url} | Jump link to the message |
{count} | Number of items (messages, users, etc.) |
Message (Mod Log - Message Edited)
| Variable | Description |
|---|---|
{message.id} | Message ID |
{message.url} | Jump link to message |
{before.content} | Previous message content |
{after.content} | Updated message content |
Message (Mod Log - Message Pinned)
| Variable | Description |
|---|---|
{message.id} | Pinned message ID |
{user.mention} | Original message author mention |
{user.display_name} | Original message author display name |
{user.id} | Original message author ID |
Message (Mod Log - Message Unpinned)
| Variable | Description |
|---|---|
{message.id} | Unpinned message ID |
{user.mention} | Original message author mention |
{user.display_name} | Original message author display name |
{user.id} | Original message author ID |
Action (Mod Log - Anti-Raid Level Auto-Changed)
| Variable | Description |
|---|---|
{before.level} | Previous anti-raid level |
{after.level} | New anti-raid level |
{reason} | Reason for level change |
Action (Mod Log - Anti-Raid Level Set by Staff)
| Variable | Description |
|---|---|
{antiraid.level} | New anti-raid level |
{before.level} | Previous anti-raid level |
{reason} | Reason for level change |
Case
| Variable | Description |
|---|---|
{case.number} | Moderation case number |
{case_type} | Case type (ban, kick, mute, etc.) |
{reason} | Action reason |
{duration} | Action duration (e.g. 1h30m) |
Case (Mod Log - Case Updated)
| Variable | Description |
|---|---|
{case.number} | Moderation case number |
{case_type} | Case type (ban, kick, mute, etc.) |
{reason} | Action reason |
{duration} | Action duration (e.g. 1h30m) |
{before.reason} | Previous case reason |
{after.reason} | Updated case reason |
Action (Mod Log - Channel Clean)
| Variable | Description |
|---|---|
{count} | Number of messages deleted |
{reason} | Text filter the clean used, if any |
{bulk_messages_file} | File attachment reference for the deleted messages log |
{bulk_messages_link} | Link to the web archive of the deleted messages |
Action (Mod Log - Mass Ban)
| Variable | Description |
|---|---|
{count} | Number of users banned |
{reason} | Ban reason |
Action (Mod Log - Mass Mute)
| Variable | Description |
|---|---|
{count} | Number of users muted |
{reason} | Mute reason |
Action (Mod Log - Mass Unban)
| Variable | Description |
|---|---|
{count} | Number of users unbanned |
{reason} | Unban reason |
Case (Mod Log - Message Spam)
| Variable | Description |
|---|---|
{case.number} | Moderation case number |
{case_type} | Case type (ban, kick, mute, etc.) |
{reason} | Action reason |
{duration} | Action duration (e.g. 1h30m) |
{count} | Number of messages deleted |
{bulk_messages_link} | Link to the web archive of the spam messages |
Case (Mod Log - Mute Expired, Mod Log - Mute on Rejoin)
| Variable | Description |
|---|---|
{case.number} | Original mute case number |
Case (Mod Log - Spam Detected)
| Variable | Description |
|---|---|
{case.number} | Moderation case number |
{case_type} | Case type (ban, kick, mute, etc.) |
{reason} | Action reason |
{duration} | Action duration (e.g. 1h30m) |
{count} | Messages deleted; for a join raid or thread spam, the members who joined or threads created in the window |
{bulk_messages_link} | Link to the web archive of the spam messages |
Voice
| Variable | Description |
|---|---|
{before.channel} | Previous voice channel mention |
{after.channel} | New voice channel mention |
Stage
| Variable | Description |
|---|---|
{channel.mention} | Stage channel mention |
{stage.topic} | Stage topic |
Stage (Mod Log - Stage Instance Updated)
| Variable | Description |
|---|---|
{channel.mention} | Stage channel mention |
{before.topic} | Previous stage topic |
{after.topic} | New stage topic |
The shared groups (Server) are listed with the common template variables. Every template also takes the Utility variables.