Dashboard Guides
Last updated Sep 27, 2026Open in dashboard

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)}.

FilterResult
upper, lower, titleUPPERCASE, lowercase, Title Case
trimRemoves spaces at the start and end
lengthThe number of characters
numberAdds thousands separators: 1234567 becomes 1,234,567
durationSeconds (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)
linktextRemoves 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

VariableResult
{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

VariableDescription
{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

VariableDescription
{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

VariableDescription
{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

VariableDescription
{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

VariableDescription
{mod.name}Moderator username
{mod.display_name}Moderator display name
{mod.id}Moderator ID
{mod.mention}Moderator mention

Utility

VariableDescription
{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

TemplateSlugVariable groups
Leaderboard Post@analytics.leaderboard.postServer, Leaderboard, Metrics

Leaderboard

VariableDescription
{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

VariableDescription
{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

TemplateSlugVariable groups
Birthday Announcement@birthday.announcementServer, Birthday Member (Member), Birthday Date
Birthday Digest@birthday.bulk_announcementServer, Bulk Birthday

Birthday Date

VariableDescription
{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

VariableDescription
{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

TemplateSlugVariable groups
Form - Acceptance Announcement@form.accept.channelForm, Author, Server
Form - Acceptance DM@form.accept.dmForm, Author, Server
Form - Submission Announcement@form.completion.channelForm, Author, Server
Form - Denial DM@form.deny.dmForm, Author, Server

Form

VariableDescription
{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

TemplateSlugVariable groups
Level Up - Announcement Channel@levels.level_up.channelServer, Author, Level
Level Up - Current Channel@levels.level_up.current_channelServer, Author, Level
Level Up - DM@levels.level_up.dmServer, Author, Level

Level

VariableDescription
{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

TemplateSlugVariable groups
Appeal Denial DM@appeals.denial.dmAuthor, Server, Appeal
Ban Confirmation@mod.ban.confirmAuthor, Server, Moderator, Action
Ban DM@mod.ban.dmAuthor, Server, Moderator, Action (Ban DM)
Infraction DM@mod.infraction.dmAuthor, Server, Action (Infraction DM)
Kick Confirmation@mod.kick.confirmAuthor, Server, Moderator, Action
Kick DM@mod.kick.dmAuthor, Server, Moderator, Action
Timeout Confirmation@mod.timeout.confirmAuthor, Server, Moderator, Action
Timeout DM@mod.timeout.dmAuthor, Server, Moderator, Action
Warning Confirmation@mod.warn.confirmAuthor, Server, Moderator, Action
Warning DM@mod.warn.dmAuthor, Server, Moderator, Action

Appeal

VariableDescription
{denial_reason}Appeal denial reason
{ban_reason}Original ban reason
{appeal_url}URL to the ban appeal form (empty if not configured)

Action

VariableDescription
{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)

VariableDescription
{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)

VariableDescription
{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

TemplateSlugVariable groups
Ping Response@command.pingLatency, Server, Invoker (Author)

Latency

VariableDescription
{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

TemplateSlugVariable groups
Welcome Message@welcomer.joinMember, Server
Welcome DM@welcomer.join_dmMember (Welcome DM), Server
Goodbye Message@welcomer.leaveMember (Goodbye Message), Server

Member

VariableDescription
{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)

VariableDescription
{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)

VariableDescription
{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

TemplateSlugVariable groups
Bluesky Post@feeds.blueskyPost, Source (Bluesky Post, Instagram Post, X (Twitter) Post), Server
Instagram Post@feeds.instagramPost (Instagram Post), Source (Bluesky Post, Instagram Post, X (Twitter) Post), Server
Kick Stream@feeds.kickPost (Kick Stream), Source, Server
Kick Clip@feeds.kick.clipsPost (Kick Clip), Source, Server
Podcast Episode@feeds.podcastPost (Podcast Episode), Source (Podcast Episode), Server
Reddit Post@feeds.redditPost (Reddit Post), Source (Reddit Post), Server
RSS Post@feeds.rssPost (RSS Post), Source (RSS Post), Server
TikTok Video@feeds.tiktokPost (TikTok Video), Source (TikTok Video), Server
Twitch Stream@feeds.twitchPost (Twitch Stream), Source, Server
Twitch Clip@feeds.twitch.clipsPost (Twitch Clip), Source, Server
X (Twitter) Post@feeds.xPost (X (Twitter) Post), Source (Bluesky Post, Instagram Post, X (Twitter) Post), Server
YouTube Video@feeds.youtubePost (YouTube Video), Source (YouTube Video), Server

Post

VariableDescription
{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)

VariableDescription
{source.name}Account display name
{source.url}Profile URL
{source.platform}Platform name
{source.icon_url}Avatar URL

Post (Instagram Post)

VariableDescription
{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)

VariableDescription
{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

VariableDescription
{source.name}Channel name
{source.url}Channel URL
{source.platform}Platform name
{source.icon_url}Channel avatar URL

Post (Kick Clip)

VariableDescription
{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)

VariableDescription
{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)

VariableDescription
{source.name}Podcast name
{source.url}Podcast URL
{source.platform}Platform name
{source.icon_url}Podcast artwork URL

Post (Reddit Post)

VariableDescription
{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)

VariableDescription
{source.name}Subreddit name
{source.url}Subreddit URL
{source.platform}Platform name
{source.icon_url}Subreddit icon URL

Post (RSS Post)

VariableDescription
{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)

VariableDescription
{source.name}Feed/channel name
{source.url}Source website URL
{source.platform}Platform name
{source.icon_url}Source icon URL

Post (TikTok Video)

VariableDescription
{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)

VariableDescription
{source.name}Creator name
{source.url}Profile URL
{source.platform}Platform name
{source.icon_url}Avatar URL

Post (Twitch Stream)

VariableDescription
{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)

VariableDescription
{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)

VariableDescription
{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)

VariableDescription
{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)

VariableDescription
{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

TemplateSlugVariable groups
Mod Log - Bot Alert@modlog.bot.alertServer, Alert, Channel, Item, Timestamp
Mod Log - Automation Rule Fired@modlog.bot.automationsServer, Rule, Trigger, Conditions, Actions, Match, Timestamp
Mod Log - Bot Command Used@modlog.bot.commandServer, User, Timestamp, Channel, Command
Mod Log - DM Failed@modlog.bot.dm_failedServer, User, Timestamp, DM Info
Mod Log - Bot Added@modlog.guild.bot_addServer, Moderator, Bot, Timestamp
Mod Log - Channel Created@modlog.guild.channel_createServer, Channel, Moderator, Timestamp
Mod Log - Channel Deleted@modlog.guild.channel_deleteServer, Channel, Moderator, Timestamp
Mod Log - Channel Updated@modlog.guild.channel_updateServer, Channel (Mod Log - Channel Updated), Moderator, Timestamp
Mod Log - Emoji Added@modlog.guild.emoji_createServer, Emoji, Moderator, Timestamp
Mod Log - Emoji Removed@modlog.guild.emoji_deleteServer, Emoji, Moderator, Timestamp
Mod Log - Emoji Updated@modlog.guild.emoji_updateServer, Emoji (Mod Log - Emoji Updated), Moderator, Timestamp
Mod Log - Invite Created@modlog.guild.invite_createServer, Moderator, Invite, Timestamp
Mod Log - Invite Deleted@modlog.guild.invite_deleteServer, Moderator, Invite (Mod Log - Invite Deleted), Timestamp
Mod Log - Members Pruned@modlog.guild.pruneServer, Moderator, Prune, Timestamp
Mod Log - Role Created@modlog.guild.role_createServer, Role, Moderator, Timestamp
Mod Log - Role Deleted@modlog.guild.role_deleteServer, Role, Moderator, Timestamp
Mod Log - Role Updated@modlog.guild.role_updateServer, Role (Mod Log - Role Updated), Moderator, Timestamp
Mod Log - Sticker Added@modlog.guild.sticker_createServer, Sticker, Moderator, Timestamp
Mod Log - Sticker Removed@modlog.guild.sticker_deleteServer, Sticker, Moderator, Timestamp
Mod Log - Sticker Updated@modlog.guild.sticker_updateServer, Sticker (Mod Log - Sticker Updated), Moderator, Timestamp
Mod Log - Thread Created@modlog.guild.thread_createServer, Thread, Moderator, Timestamp
Mod Log - Thread Deleted@modlog.guild.thread_deleteServer, Thread, Moderator, Timestamp
Mod Log - Thread Updated@modlog.guild.thread_updateServer, Thread (Mod Log - Thread Updated), Moderator, Timestamp
Mod Log - Server Updated@modlog.guild.updateServer, Moderator, Changes, Timestamp
Mod Log - Webhook Created@modlog.guild.webhook_createServer, Webhook, Moderator, Timestamp
Mod Log - Webhook Deleted@modlog.guild.webhook_deleteServer, Webhook (Mod Log - Webhook Deleted), Moderator, Timestamp
Mod Log - Server Avatar Changed@modlog.member.avatarServer, User, Timestamp, Avatar
Mod Log - Member Joined@modlog.member.joinServer, User, Timestamp, Join Info, Invite (Mod Log - Member Joined), Inviter
Mod Log - Member Joined with Prior Cases@modlog.member.joined_with_casesServer, User, Timestamp, Case Info
Mod Log - Member Left@modlog.member.leaveServer, User, Timestamp, Leave Info
Mod Log - Nickname Changed@modlog.member.nick_changeServer, User, Timestamp, Nickname
Mod Log - Member Data Restored@modlog.member.restoreServer, User, Timestamp, Restore Info
Mod Log - Role Added to Member@modlog.member.role_addServer, User, Timestamp, Role, Moderator
Mod Log - Member Roles Changed@modlog.member.role_changesServer, User, Timestamp, Role Changes, Moderator
Mod Log - Role Removed from Member@modlog.member.role_removeServer, User, Timestamp, Role, Moderator
Mod Log - Username Changed@modlog.member.username_changeServer, User, Timestamp, Username
Mod Log - Bulk Message Delete@modlog.message.bulk_deleteServer, Moderator, Channel, Action, Timestamp
Mod Log - Message Deleted@modlog.message.deleteServer, User, Timestamp, Channel, Message
Mod Log - Message Auto-Deleted@modlog.message.delete_autoServer, User, Timestamp, Channel, Message
Mod Log - Message Deleted (No Cache)@modlog.message.delete_bareServer, User, Moderator, Channel, Message, Timestamp
Mod Log - Message Edited@modlog.message.editServer, User, Timestamp, Channel, Message (Mod Log - Message Edited)
Mod Log - Message Pinned@modlog.message.pinServer, Moderator, Channel, Message (Mod Log - Message Pinned), Timestamp
Mod Log - Message Unpinned@modlog.message.unpinServer, Moderator, Channel, Message (Mod Log - Message Unpinned), Timestamp
Mod Log - Anti-Raid Level Auto-Changed@modlog.mod.antiraid_autoServer, Action (Mod Log - Anti-Raid Level Auto-Changed), Timestamp
Mod Log - Anti-Raid Level Set by Staff@modlog.mod.antiraid_userServer, Moderator, Action (Mod Log - Anti-Raid Level Set by Staff), Timestamp
Mod Log - AutoMod Action@modlog.mod.automodServer, User, Moderator, Case, Timestamp
Mod Log - Ban@modlog.mod.banServer, User, Moderator, Case, Timestamp
Mod Log - Case Created@modlog.mod.case_createServer, User, Moderator, Case, Timestamp
Mod Log - Case Deleted@modlog.mod.case_deleteServer, User, Moderator, Case, Timestamp
Mod Log - Case Updated@modlog.mod.case_updateServer, User, Moderator, Case (Mod Log - Case Updated), Timestamp
Mod Log - Message Censored@modlog.mod.censorServer, User, Timestamp, Channel, Message
Mod Log - Channel Clean@modlog.mod.cleanServer, Moderator, Channel, Action (Mod Log - Channel Clean), Timestamp
Mod Log - Force Ban@modlog.mod.forcebanServer, User, Moderator, Case, Timestamp
Mod Log - Kick@modlog.mod.kickServer, User, Moderator, Case, Timestamp
Mod Log - Mass Ban@modlog.mod.massbanServer, Moderator, Action (Mod Log - Mass Ban), Timestamp
Mod Log - Mass Mute@modlog.mod.massmuteServer, Moderator, Action (Mod Log - Mass Mute), Timestamp
Mod Log - Mass Unban@modlog.mod.massunbanServer, Moderator, Action (Mod Log - Mass Unban), Timestamp
Mod Log - Message Spam@modlog.mod.message_spamServer, User, Moderator, Case (Mod Log - Message Spam), Timestamp
Mod Log - Mute@modlog.mod.muteServer, User, Moderator, Case, Timestamp
Mod Log - Mute Expired@modlog.mod.mute_expiredServer, User, Timestamp, Case (Mod Log - Mute Expired, Mod Log - Mute on Rejoin)
Mod Log - Mute on Rejoin@modlog.mod.mute_rejoinServer, User, Timestamp, Case (Mod Log - Mute Expired, Mod Log - Mute on Rejoin)
Mod Log - Note@modlog.mod.noteServer, User, Moderator, Case, Timestamp
Mod Log - Spam Detected@modlog.mod.other_spamServer, User, Moderator, Case (Mod Log - Spam Detected), Timestamp
Mod Log - Soft Ban@modlog.mod.softbanServer, User, Moderator, Case, Timestamp
Mod Log - Timed Ban@modlog.mod.timed_banServer, User, Moderator, Case, Timestamp
Mod Log - Timed Mute@modlog.mod.timed_muteServer, User, Moderator, Case, Timestamp
Mod Log - Temp Ban Removed@modlog.mod.timed_unbanServer, User, Moderator, Case, Timestamp
Mod Log - Timed Unmute@modlog.mod.timed_unmuteServer, User, Moderator, Case, Timestamp
Mod Log - Unban@modlog.mod.unbanServer, User, Moderator, Case, Timestamp
Mod Log - Unmute@modlog.mod.unmuteServer, User, Moderator, Case, Timestamp
Mod Log - Warning@modlog.mod.warnServer, User, Moderator, Case, Timestamp
Mod Log - Force Voice Disconnect@modlog.voice.force_disconnectServer, User, Timestamp, Channel, Moderator
Mod Log - Force Voice Move@modlog.voice.force_moveServer, User, Timestamp, Voice, Moderator
Mod Log - Voice Channel Join@modlog.voice.joinServer, User, Timestamp, Channel
Mod Log - Voice Channel Leave@modlog.voice.leaveServer, User, Timestamp, Channel
Mod Log - Voice Channel Move@modlog.voice.moveServer, User, Timestamp, Voice
Mod Log - Stage Instance Created@modlog.voice.stage_createServer, Stage, Moderator, Timestamp
Mod Log - Stage Instance Ended@modlog.voice.stage_deleteServer, Stage, Moderator, Timestamp
Mod Log - Stage Instance Updated@modlog.voice.stage_updateServer, Stage (Mod Log - Stage Instance Updated), Moderator, Timestamp

Alert

VariableDescription
{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

VariableDescription
{channel.mention}Channel mention (#name)
{channel.name}Channel name
{channel.id}Channel ID
{channel.type}Channel type (text, voice, thread, forum, stage, etc.)

Item

VariableDescription
{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

VariableDescription
{timestamp}Unix timestamp integer - use as <t:{timestamp}:f>, <t:{timestamp}:R>, etc.

Rule

VariableDescription
{rule.id}Rule ID
{rule.name}Rule name
{rule.description}Rule description (empty if not set)

Trigger

VariableDescription
{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

VariableDescription
{conditions.result}Condition check result (always 'passed' at fire time)
{conditions.total}Total number of conditions configured on the rule

Actions

VariableDescription
{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

VariableDescription
{match.summary}What the conditions (or the spam threshold) matched, on one line (empty when nothing was recorded)

User

VariableDescription
{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

VariableDescription
{command.name}Command name (without /)
{command.args}Command arguments summary

DM Info

VariableDescription
{dm.context}Context for what DM was attempted (e.g. ban notification)

Moderator

VariableDescription
{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

VariableDescription
{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)

VariableDescription
{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

VariableDescription
{entity.name}Entity name (emoji, sticker, etc.)
{entity.id}Entity ID

Emoji (Mod Log - Emoji Updated)

VariableDescription
{entity.name}Entity name (emoji, sticker, etc.)
{entity.id}Entity ID
{before.name}Previous emoji name
{after.name}Updated emoji name

Invite

VariableDescription
{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)

VariableDescription
{invite.code}Invite code
{invite.channel}Invite channel mention
{invite.channel_name}Invite channel name

Prune

VariableDescription
{count}Number of members pruned
{days}Inactivity threshold in days

Role

VariableDescription
{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)

VariableDescription
{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

VariableDescription
{entity.name}Entity name (emoji, sticker, etc.)
{entity.id}Entity ID

Sticker (Mod Log - Sticker Updated)

VariableDescription
{entity.name}Entity name (emoji, sticker, etc.)
{entity.id}Entity ID
{before.name}Previous sticker name
{after.name}Updated sticker name

Thread

VariableDescription
{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)

VariableDescription
{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

VariableDescription
{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

VariableDescription
{webhook.name}Webhook name
{webhook.id}Webhook ID
{channel.mention}Channel the webhook is in
{channel.name}Channel name

Webhook (Mod Log - Webhook Deleted)

VariableDescription
{webhook.name}Webhook name
{webhook.id}Webhook ID
{channel.mention}Channel the webhook was in
{channel.name}Channel name

Avatar

VariableDescription
{before.avatar}Previous guild avatar URL (empty if none)
{after.avatar}New guild avatar URL (empty if removed)

Join Info

VariableDescription
{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)

VariableDescription
{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

VariableDescription
{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

VariableDescription
{case_count}Number of prior moderation cases

Leave Info

VariableDescription
{joined.at}When member joined (Discord timestamp)

Nickname

VariableDescription
{before.nick}Previous nickname (empty if none)
{after.nick}New nickname (empty if cleared)

Restore Info

VariableDescription
{restored.roles}Roles restored on rejoin

Role Changes

VariableDescription
{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

VariableDescription
{before.name}Previous username
{after.name}New username
{before.global_name}Previous display name
{after.global_name}New display name

Action

VariableDescription
{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

VariableDescription
{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)

VariableDescription
{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)

VariableDescription
{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)

VariableDescription
{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)

VariableDescription
{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)

VariableDescription
{antiraid.level}New anti-raid level
{before.level}Previous anti-raid level
{reason}Reason for level change

Case

VariableDescription
{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)

VariableDescription
{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)

VariableDescription
{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)

VariableDescription
{count}Number of users banned
{reason}Ban reason

Action (Mod Log - Mass Mute)

VariableDescription
{count}Number of users muted
{reason}Mute reason

Action (Mod Log - Mass Unban)

VariableDescription
{count}Number of users unbanned
{reason}Unban reason

Case (Mod Log - Message Spam)

VariableDescription
{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)

VariableDescription
{case.number}Original mute case number

Case (Mod Log - Spam Detected)

VariableDescription
{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

VariableDescription
{before.channel}Previous voice channel mention
{after.channel}New voice channel mention

Stage

VariableDescription
{channel.mention}Stage channel mention
{stage.topic}Stage topic

Stage (Mod Log - Stage Instance Updated)

VariableDescription
{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.