docs

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}}
welcome to rina hq
hey @rina, you're our 1337th member

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.

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

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

segmentresult
{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}
now playing
glass petals — lunar static

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}
pick your colour
click a button to toggle a role
🌸pink💧bluerules

sections with a button

{container}$v{section: **rina.lol**\nthe dashboard for everything && button && link && open && https://rina.lol}
rina.lol
the dashboard for everything
open

message options

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