Embeds
Master the fundamentals of greed's custom embed scripting.
Core Structure
greed uses a specialized token-based system for building embeds. Each component is defined within braces {} and follows a key: value pattern.
The syntax for a standard parameter is:
{- Opens the parameter block.key:- Identifies the property (e.g.,title,description).value- The content or configuration for that property.}- Closes the parameter block.
Block Separators
To organize your script or separate individual embed properties, you can use $v. In greed's engine, this acts as a newline separator, allowing the parser to clearly distinguish between different nodes.
{title: Hello World}$v{description: This is a custom embed!}
Available Parameters
Most parameters take a simple text or URL value.
| Key | Description | Example |
|---|---|---|
content | Plain text message outside the embed. | {content: Hello {user}} |
title | The main title of the embed. | {title: Server News} |
description | The body text of the embed. | {description: Join our Discord!} |
color | The sidebar color (Hex or Decimal). | {color: #ccccff} |
url | Makes the title a clickable link. | {url: https://greed.best} |
image | A large image at the bottom. | {image: https://.../img.png} |
thumbnail | A small image in the top right. | {thumbnail: https://.../icon.png} |
timestamp | Adds the current time to the footer. | {timestamp} |
Advanced Parameters
Some parameters support multiple values separated by &&.
Mixing Text and Embeds
By default, greed attempts to identify if you are sending a raw text message or an embed script. If you want to ensure the bot parses your script correctly—especially when including variables—begin your message with {embed}$v.
{embed}$v{title: Welcome!}$v{description: Glad you joined us, {user.mention}!}
Tips & Tricks
- New Lines: You can create real new lines in your
{description}by simply pressingEnterwithin the script. - Multiple Embeds: Want to send more than one embed in a single message? Just start a new
{embed}block (up to 10 per message). - Zero-Width Spaces: If you need an empty field or title, you can use a zero-width space character.
Discord Embed Limits
Be aware of these hard Discord limits when building embeds:
| Element | Limit |
|---|---|
| Embeds per message | 10 |
| Title length | 256 characters |
| Description length | 4096 characters |
| Fields per embed | 25 |
| Field name length | 256 characters |
| Field value length | 1024 characters |
| Footer text length | 2048 characters |
| Author name length | 256 characters |
| Total content across all fields | 6000 characters |
| Buttons per message | 5 |
If you exceed these limits, your embed script will fail to render. The parser will report the specific limit that was exceeded.
Mentions in Embeds
When your embed contains role or user mentions (e.g., {guild.owner_id} rendered as a mention), they will only ping if your server has the appropriate allowed mentions configured for the bot's message. By default, @everyone and role pings are disabled in Discord for security reasons.
If mentions in your scripts aren't pinging users, check your server's permissions for the bot and any custom role mention settings configured through greed's moderation features.
Parsing Rules
- Keys are case-insensitive:
{Title: ...}and{title: ...}work the same way. - Whitespace after colon is optional:
{title:text}and{title: text}both work. - Separators: Use
$vto explicitly separate nodes (it becomes a newline), or{node1}{node2}to chain without space. - Spaces between nodes:
} {is automatically converted to}{so spacing doesn't break parsing. - Unknown keys are ignored: If you use a key like
{unknown: text}, it simply won't appear in the output. - Unresolved variables: If a variable like
{undefined.value}doesn't exist, it renders as the literal textundefined.value.
If you have an unclosed brace (e.g., {title: hello without a closing }), the parser will skip it and continue with the rest of your text.