Embeds and the script
The full reference for the {braces} syntax, every command that accepts it, and the editor that shows you the result.
An embed is the bordered box with a colour down the side. Arklynn builds them from a small script: each instruction in braces, in any order, on one line or several. The same script works in announcements, welcome messages, leave messages, booster messages, level-up messages and scheduled announcements - learn it once.
If you would rather not learn it: arklynn.xyz/embed builds the script for you with a live preview, and the dashboard Embed Editor does the same and can post the result. The script is here because it is faster once you know it, and because a script can be pasted into a command.
The shortest possible one
{embed}{description: Hello}Everything is optional except that you need either some content or an embed with something in it. Plain text with no braces at all is also fine in the commands that accept a message.
Every instruction
Outside the embed
| Instruction | What it does |
|---|---|
{content: ...} | Normal message text above the embed. This is where a ping goes - a mention inside an embed is text, not a notification. |
{embed} | Starts an embed. Write it again to start a second one. |
{delete: 30} | Delete the message after that many seconds. |
Inside the embed
| Instruction | What it does |
|---|---|
{title: ...} | The heading, in bold at the top. |
{description: ...} | The body. Discord markdown works - bold, links, lists. |
{color: #ffffff} | The stripe down the left. A hex code, with or without the hash. |
{image: url} | A large picture at the bottom. Must be a real URL. |
{thumbnail: url} | A small picture top right. {member.avatar} here is the usual trick. |
{footer: text} | Small grey text at the bottom. {footer: text && icon url} adds a small icon. |
{author: name} | A line above the title. {author: name && icon url && link} for the icon and a link. |
{field: Name && Value} | A labelled block. Write it several times for several fields. |
{field: Name && Value && true} | The same, side by side with the next one instead of below it. |
{timestamp} | Puts the current time in the footer. |
Buttons
| Instruction | What it does |
|---|---|
{button: link && Open the docs && https://...} | A button that opens a link. Needs a real URL - it is checked. |
{button: primary && Press me && some_id} | A coloured button. primary, secondary, success and danger are the four styles. |
{button: link && Docs && https://... && } | A fourth part puts an emoji on the button. |
A non-link button needs something to do. On its own it is a button that presses and does nothing. If you want buttons that open more embeds, that is a panel - see the Panels page.
The && separator
Four instructions take more than one part, and the parts are separated by two ampersands: field, footer, author and button. It is && rather than a single character because a title or a label can contain almost anything, and a separator people type by accident is a separator that breaks their message.
{field: When && Saturday at 20:00 && true}Line breaks
You cannot press Enter inside a slash command option, so write $v where you want a new line.
{embed}{description: First line$vSecond line}Variables
The same set as the Welcome page: {user.name}, {user.mention}, {guild}, {guild.count}, {channel}, {member.avatar} and the rest. They work in every part of an embed - title, description, fields, footer, author, and in image URLs.
A complete example
{content: @everyone}
{embed}
{title: Server event on Saturday}
{description: Starts at 20:00.$vBring a friend - we are {guild.count} and there is room for more.}
{field: When && Saturday 20:00 && true}
{field: Where && Voice: Main Stage && true}
{thumbnail: {guild.icon}}
{color: #ffffff}
{footer: Posted by {user.name}}
{timestamp}
{button: link && Add to calendar && https://example.com}Where the script works
| Command | What it is for |
|---|---|
.ann | Post an announcement to a channel now. Also .announcement and .embed. Needs Administrator, and shows you a preview to confirm before it sends. |
/announcement | The same thing as a slash command. |
.setup_welcome | The message for somebody joining. |
.setup_leave | The message for somebody leaving. |
.setup_booster | The message for somebody boosting. |
.setup_levelup_message | The message when somebody levels up. |
/schedule add | An announcement that goes out later. |
When it will not parse
| What it says | What it means |
|---|---|
Unbalanced braces in script | A { with no matching }. Usually a missing one at the very end. |
title outside of embed | You wrote {title: ...} before any {embed}. Add {embed} in front of it. |
Unknown command: x | A typo in an instruction name, or an instruction that does not exist. |
Multiple content commands | Two {content: ...} in one script. There can only be one. |
No message content or embed provided | The script parsed but produces nothing. Plain text with no braces does this too - wrap it in {content: ...}. |
field requires name and value | You used a single | instead of &&. It is {field: Name && Value}. |
button requires type and label | Same thing: {button: link && Label && https://...}. |
link button needs a valid URL | The third part of a link button has to be a real URL, and it is checked. |
Errors come back before anything is sent, so a broken script is never a broken message in your announcement channel.
From the website
The dashboard Embed Editor is the same thing with a preview beside it. It has two modes: Message, which sends one message, and Panel, which builds an embed with buttons that open other embeds. Either way it can post straight to a channel - there is no copying a script back into Discord.
arklynn.xyz/embed is the public version. It has no idea what server you are in and no way to send anything, so it is a preview and a script generator: build it there, copy the script, paste it into a command. arklynn.xyz/embed/templates has ready-made ones to start from.