scripting
rina script — build components v2 messages with {embed} style syntax.
rina script describes a message. segments look like {key: value} and are joined with $v. it reads bleed & greed scripts, but the output is a clean components v2 container instead of an embed with a colour bar.
{container}$v{title: welcome to {guild.name}}$v{text: hey {user.mention}, you're our **{guild.count.format}** member}$v{thumbnail: {user.avatar}}anything that isn't a script (no {key: segments) is sent as plain text.
containers
{container} (or {embed}) starts a new container. everything after it goes inside until the next {container}. you can have several containers in one message.
| segment | result |
|---|---|
{container} | start a colourless container |
{container: #f472b6} | container with an accent stripe |
{container: spoiler} | blurred until clicked |
{plain} | following components are placed outside any container |
{content: text} | plain message text above the containers |
text
| segment | result |
|---|---|
{title: text} | large heading (## text) |
{url: https://…} | turns the previous title into a link |
{text: text} / {description: text} | a text block (markdown supported) |
{author: name && icon && url} | small subtext line |
{field: name && value} | bold name with the value below it |
{footer: text} | subtext at the bottom, after a divider |
{timestamp} | adds the current time to the footer |
markdown works everywhere: **bold**, *italic*, __underline__, ~~strike~~, ||spoiler||, `code`, # headings, -# subtext, > quotes, lists and [masked links](https://rina.lol).
media
| segment | result |
|---|---|
{thumbnail: url} | small image beside the first text block |
{image: url} / {media: url && url} | media gallery (up to 10 images, gifs or videos) |
{section: text && thumbnail && url} | text with an image beside it |
{file: attachment://name.png} | an attached file |
{container}$v{section: **now playing**\nglass petals — lunar static && thumbnail && {user.avatar}}$v{media: https://rina.lol/showcase/welcome.png}
separators
{separator} adds a divider line. {separator: large} adds more space and {separator: invisible} (or {spacer}) adds space without a line.
buttons
{button: style && label && url-or-role && emoji}
- style:
link,primary(blurple),secondary(grey),success(green),danger(red) - link buttons need a url
role:<role id>makes a self-assign role button. members click it to toggle the role. roles with dangerous permissions are refused.- any other non-link button is decorative and shown disabled
up to 5 buttons in a row. consecutive buttons are grouped into rows automatically.
{container}$v{title: pick your colour}$v{text: click a button to toggle a role}$v{button: primary && pink && role:100000000000000001 && 🌸}$v{button: primary && blue && role:100000000000000002 && 💧}$v{button: link && rules && https://rina.lol}sections with a button
{container}$v{section: **rina.lol**\nthe dashboard for everything && button && link && open && https://rina.lol}message options
| segment | effect |
|---|---|
{delete: 30} | delete the message after 30 seconds ({delete: 5m} works too) |
{reply} / {noreply} | reply to the triggering message or not |
{ephemeral} | only visible to the user (slash commands & buttons) |
{dm} | send to the member's dms instead |
{pings} | allow role and @everyone pings |
limits
discord allows 40 components and 4000 characters of text per message. rina trims anything over the limit. the builder shows how much you've used.
converting old embeds
,copyembed <message link>gives you the script of any message, rina container or classic embed- paste an old
{embed}$v{color: …}script anywhere. it converts automatically - the embed builder can import a discord message json
see every placeholder on the variables page.