Scripting syntax
The shard script language — tags for messages, embeds, buttons, selects and variables.
Scripting syntax
shard scripts (used by ,script, welcome/goodbye cards, autoresponder replies and look scripts) are written in a lightweight tag language. Everything below works inside {...} tags.
Global tags
| Tag | Effect |
|---|---|
{message: text} |
Text shown above the components |
{delete: 10s} / {delete: 5m} / {delete: 1h} |
Auto-delete the message after a delay |
{silent} |
Send without notification ping |
{ephemeral} / {private} |
Only visible to the invoking user |
{pingable} / {pingable: @role} |
Explicitly allow mentions (off by default) |
Components
Component tags turn a script into an interactive card — text blocks, separators, images, buttons and select menus. Wrap everything in a container with {container} and {/container}; multiple containers create multiple cards.
| Tag | Effect |
|---|---|
{container} … {/container} |
Card container (repeatable) |
{content: ...} / {text: ...} |
Text display block |
{separator} |
Divider — variants: {separator.large}, {separator.empty}, {separator.large.empty} |
{image: url} |
Single image |
{gallery: url1, url2} |
Image gallery — comma-separated, max 10 |
{thumbnail: url && block} |
Thumbnail attached to a block |
{button: ...} |
Button (see below) |
{select: ...} + {option: ...} |
Select menu (see below) |
{button1}–{button5}, {select1}–{select5}, {dropdown} |
Row placeholders inside {content:} |
Buttons
{button: green && Claim && 🎁 && reply: thanks {user.mention}!}
Parameters joined with && (order is flexible — unrecognized parts become the label):
- style:
blurple/primary,gray/secondary,green/success,red/danger,link— or ahttps://URL for link buttons - label: button text
- emoji: unicode or custom emoji
- row:
1–5targets a button row,sidepositions at the side - flags:
disabled reply:: script executed on click — receives{user.*}variables
Select menus
{select: 1 && Choose an option && 1 && 1 && enabled}
{option: 1 && First choice && a description && emoji}
{option: 1 && Second choice && reply: you picked it!}
{select: N && placeholder && min && max && enabled|disabled}—Nis the select row (1–5){option: N && label && description && emoji && default}—Nmust match the select row;reply:runs a script on pick
Embeds
Wrap content in {embed} (multiple embeds separated by $v):
{embed}
{title: Hello {user.mention}}
{description: Some **markdown** text}
{url: https://example.com}
{image: https://…}
{thumbnail: https://…}
{timestamp}
{author: Name && icon_url && url}
{field: Title && Value && inline}
{footer: Footer text && icon_url}
{color: #5865f2}
{message: text above embed}
{embed}
| Embed tag | Effect |
|---|---|
{title:} / {description:} |
main text (markdown supported) |
{url:} |
title link |
{color:} |
accent color — hex or name |
{image:} / {thumbnail:} |
large image / corner thumbnail |
{timestamp} |
current time footer |
{author: name && icon && url} |
author line |
{field: name && value && inline} |
embed field (inline optional) |
{footer: text && icon} |
footer line |
{message:} |
text above the embed |
Raw JSON
A script that is a single JSON object with components or embeds is sent as-is — full Discord API payloads are supported.
Variables
See the complete variable list — {user.*}, {guild.*}, {channel.*}, {date.*}, {lastfm.*}, {roblox.*}, {youtube.*}, {sc.*} and Polish aliases.