balqis

design syntax

placeholders, markdown, examples and mistakes

the design syntax is one long guide: placeholders, markdown, examples and mistakes.

a placeholder is a word between curly brackets, like {server}. when balqis posts your design, it swaps the placeholder for the real value. for example {server} becomes the name of your server.

you make a design in the design builder: use /template edit, or the edit design buttons in /jail settings, /guard trap notice and /setup start. a design has up to 20 parts and 4000 letters.


these placeholders work in each post. required means the design must keep it, or it cannot be saved. a name that is not in the list gives an error.

jail panel
{server}: the name of your server
{server.icon}: the picture of your server (only for picture links)
{member_count}: how many members the server has

jail card
{user}: the member. the only placeholder that can ping
{user.name}: the name of the member, as plain text
{user.avatar}: the avatar of the member (only as a picture)
{server}: the name of your server
{server.icon}: the picture of your server (only for picture links)
{case}: the case number
{reason} (required): the reason of the jail
{ends}: when the jail ends
{when}: when the jail started

trap notice
{server}: the name of your server
{server.icon}: the picture of your server (only for picture links)
{member_count}: how many members the server has
{trap.action}: what happens here, from the trap settings (like a softban, or a timeout of 1 day)
{trap.rule}: the careful or strict text of the balqis notice

ticket panel
{server}: the name of your server
{server.icon}: the picture of your server (only for picture links)
{member_count}: how many members the server has
{hours}: the support hours (in your server's time and in the reader's own time)

ticket welcome
{user}: the member. the only placeholder that can ping
{user.name}: the name of the member, as plain text
{user.avatar}: the avatar of the member (only as a picture)
{server}: the name of your server
{server.icon}: the picture of your server (only for picture links)
{topic}: the topic of the ticket
{topic.text}: the welcome text of the topic
{number}: the ticket number (0000)
{answers}: the answers of the form

saved template
{server}: the name of your server
{server.icon}: the picture of your server (only for picture links)
{member_count}: how many members the server has

menu answer
{server}: the name of your server
{server.icon}: the picture of your server (only for picture links)
{member_count}: how many members the server has
{user}: the member. the only placeholder that can ping
{user.name}: the name of the member, as plain text
{user.avatar}: the avatar of the member (only as a picture)


these placeholders work in each post. required means the design must keep it, or it cannot be saved. a name that is not in the list gives an error.

store panel
{server}: the name of your server
{server.icon}: the picture of your server (only for picture links)
{member_count}: how many members the server has
{store}: the store name
{seller}: the seller (a mention that never pings)
{status}: open, closed, or when the store opens
{hours}: the open hours of the store (in your server's time and in the reader's own time)
{products}: the products and prices from the catalog
{discounts}: the store's sales (with a countdown) and its role and booster discounts
{rating}: the stars: "★ 4.8", or "new store" before 5 vouches (a design without these 4 gets the line at the bottom)
{vouches}: how many vouches, and the old ones: "126 vouches · + 340 before balqis"
{ontime}: "usually on time" (empty when the store is not)
{trusted}: "trusted store" when the owner gave the badge (empty when not)

receipt post
{server}: the name of your server
{server.icon}: the picture of your server (only for picture links)
{member_count}: how many members the server has
{store}: the store name
{invoice}: the invoice number (0001)
{check}: the check code under the barcode
{total}: the total the public copy shows (empty when it shows no amounts)
{date}: when the receipt was made
{items}: the items, one per line (10 at most)
{seller}: the seller (a mention that never pings)
{seller.avatar}: the seller's avatar (the server icon when the names are off)
{buyer}: the buyer (a mention that never pings; empty when the names are off)
{receipt}: the receipt picture (always shows: at the bottom when you leave it out)

vouch post
{server}: the name of your server
{server.icon}: the picture of your server (only for picture links)
{member_count}: how many members the server has
{buyer}: the buyer (a mention that never pings; "a verified buyer" when they vouched without their name)
{buyer.avatar}: the buyer's avatar (the server icon for a verified buyer)
{seller}: the seller (a mention that never pings)
{seller.avatar}: the seller's avatar
{store}: the store name
{stars}: the stars and "4 of 5" (always shows: at the top when you leave it out)
{text}: the buyer's words in quotes (empty when they wrote none)
{items}: the items of the order, one per line, without amounts (10 at most)
{invoice}: the invoice number (0007; empty for a verified buyer)
{check}: the receipt's check code (empty for a verified buyer)
{verified}: "verified purchase · invoice 0007" (always shows: at the bottom when you leave it out)
{delivery}: the delivery time ("delivered in 1 hour 5 minutes")

{date}: when the vouch was written


these placeholders work in each post. required means the design must keep it, or it cannot be saved. a name that is not in the list gives an error.

role panel
{server}: the name of your server
{server.icon}: the picture of your server (only for picture links)
{member_count}: how many members the server has
{panel}: the name of the role panel
{mode}: what a press does on this panel, like "pick one role" (and the max)
{roles}: the roles of the panel as a list, with their short lines
{open}: when the panel opens or closes (empty when it is always open)

role answer
{server}: the name of your server
{server.icon}: the picture of your server (only for picture links)
{member_count}: how many members the server has
{user}: the member. the only placeholder that can ping
{panel}: the name of the role panel
{added}: the roles the member just got
{removed}: the roles the member just lost
{now}: the roles of this panel the member has now
{count}: how many roles of this panel the member has now
{note}: the notes of the roles the member just got
{ends}: when the roles the member just got end (empty when they never end)


you can use discord markdown in every text:
**bold** gives bold
*italic* gives italic
> quote gives a quote
`code` gives code
## header gives a big title (### is smaller, -# is tiny)
[words](https://example.com) gives a link

new lines work too. you do not need anything else.


an example design for jail panel. copy it, then paste it into a text block: add a block and pick text.

## you are in jail in {server}
use the buttons below to see why.

balqis adds the locked buttons by itself. you can only rename them. the jail card must keep {reason}.


an example design for jail card. copy it, then paste it into a text block: add a block and pick text.

## your jail
> **case**: {case}
> **reason**: {reason}
> **ends**: {ends}

balqis adds the locked buttons by itself. you can only rename them. the jail card must keep {reason}.


an example design for trap notice. copy it, then paste it into a text block: add a block and pick text.

## do not write here
this channel is a trap in {server}. writing here removes you from the server.

balqis adds the locked buttons by itself. you can only rename them. the jail card must keep {reason}.


an example design for ticket panel. copy it, then paste it into a text block: add a block and pick text.

## need help?
pick a topic below. a private place opens for you and the staff.

balqis adds the locked buttons by itself. you can only rename them. the jail card must keep {reason}.


an example design for ticket welcome. copy it, then paste it into a text block: add a block and pick text.

## ticket {number} · {topic}
> **member**: {user}
{topic.text}
{answers}

balqis adds the locked buttons by itself. you can only rename them. the jail card must keep {reason}.


an example design for store panel. copy it, then paste it into a text block: add a block and pick text.

## {store}
> **seller**: {seller}
> **status**: {status}
{products}
{hours}

balqis adds the locked buttons by itself. you can only rename them. the jail card must keep {reason}.


an example design for receipt post. copy it, then paste it into a text block: add a block and pick text.

## receipt · {store}
> **invoice**: {invoice}
> **total**: **{total}**
{items}

balqis adds the locked buttons by itself. you can only rename them. the jail card must keep {reason}.


an example design for vouch post. copy it, then paste it into a text block: add a block and pick text.

## {stars}
{buyer} vouched for **{store}**
{text}
-# {delivery} · {verified}

balqis adds the locked buttons by itself. you can only rename them. the jail card must keep {reason}.


an example design for saved template. copy it, then paste it into a text block: add a block and pick text.

## welcome to {server}
we are {member_count} members. read the rules first.

balqis adds the locked buttons by itself. you can only rename them. the jail card must keep {reason}.


an example design for role panel. copy it, then paste it into a text block: add a block and pick text.

## {panel}
{mode}
{roles}

the role buttons (or the menu) and my roles are one part: move it up or down in the builder.

balqis adds the locked buttons by itself. you can only rename them. the jail card must keep {reason}.


an example design for role answer. copy it, then paste it into a text block: add a block and pick text.

## welcome, {user}
you got {added}
{note}
-# you have {count} roles from {panel}

balqis adds the locked buttons by itself. you can only rename them. the jail card must keep {reason}.


a saved template is a design you keep under a name. make one with /template create, write it in the builder, then send it with /template send (empty channel = this channel). this server can have 5 saved templates.

saved templates use only these placeholders: {server} {server.icon} {member_count}. they work in every post of balqis, so a saved template can be copied into a post with load template. it is a copy, never a link.

they have link buttons only, no locked buttons. balqis remembers where each one was sent (the channel and message ids). press update posted after you change a template, and the messages are edited. if a message or channel was deleted, balqis forgets it. if you change the style, a new message is posted. you can rename a saved template with /template edit and the option new-name: the sent messages keep working.


a menu is a dropdown on a saved template. a member picks an option and balqis shows the answer only to them, so the channel stays clean. anyone can pick.

how to make one
1. /template create, then press edit design.
2. add block > menu. write the grey text (e.g. pick a topic).
3. add option for each option: a name and an optional short description (up to 25 options).
4. pick an option, then edit answer. it is a normal design: text, pictures, buttons. press back to menu when you are done.
5. save, then /template send.

good to know

  • one menu per template. a menu does not use one of your saved template places.
  • an answer has the style and color of the template.
  • in an answer you can also use {user} {user.name} {user.avatar}. {user.avatar} works as a picture only.
  • pictures in answers count in the 4 pictures of the template.
  • nobody gets a ping from an answer.
  • one pick per person every 3 seconds.
  • one live version: members see changes only after you press update posted. save does not change what members see, and the builder says "not live yet". /template send posts the live version (the first send makes the saved design live). a removed option answers "this option is gone". a deleted template answers "this menu is not used anymore".

below is a "roles info" menu with 3 options. copy each text into the box of its form.

menu text and options (one form each):

menu text: pick a topic

option 1: colors
description: how to get a color role

option 2: pings
description: which pings you can turn on

option 3: interests
description: roles for your hobbies

answer of option 1 (colors):

## colors
hi {user.name}! a color role changes the color of your name.
open the roles channel and pick one.

answer of option 2 (pings):

## pings
hi {user.name}! you can turn on pings for news and events.
you can turn them off again any time.

answer of option 3 (interests):

## interests
hi {user.name}! interest roles show what you like.
welcome to {server}. we are {member_count} members!

you can use emoji in your designs.

in a text (a design or an answer): type :name: and balqis makes it the real emoji of this server. if no emoji has that name, the text stays as written (no error). example: welcome to {server} :tada:

in a field (a menu option, a link button, a renamed locked button): type :name:, paste an emoji like <:name:123456789012345678> (or <a:name:...> for an animated one), or use a normal emoji. only emoji of this server and normal emoji work. a name that matches nothing gives an error. if two emoji have the same name, the first is used and balqis tells you.

link buttons in the embed form: rules | https://example.com/rules | :book:

balqis saves the emoji id and name, never a picture link. before /template send and update posted it checks every emoji: a deleted one is left out and the reply says which. the emoji follow the live version like the rest of the design.

emoji from another server: :name: searches only this server. to use an emoji of another server, paste it as <:name:id> (or <a:name:id>). to get it, type \:name: in a channel of that server and send it: discord shows <:name:123456789012345678>. copy that. example: <:party:123456789012345678>.
balqis must be in that server, and you must be a member of it too (like nitro). if balqis leaves that server or the emoji is deleted, it is left out when you send or update.
careful: in private answers (menu picks) discord may show an emoji of another server as plain text when @everyone cannot use external emoji in that channel. the builder tells you once, and /template send warns when the channel blocks it.


you can upload a picture in the forms of a section, a gallery or an embed. send a png, jpg, gif or webp file of up to 2 mb. a design can have 4 pictures. balqis checks the real file, not only its name.

balqis saves the picture itself and attaches it when it posts. a discord attachment link is never accepted, because it stops working after a while. a link that starts with https:// works too. {server.icon} is the picture of your server.

if the upload box does not show, balqis asks you to send the picture as a message within 100 seconds and deletes it afterwards. saved pictures are kept until the design or the template is deleted.


the most common mistakes. the builder tells you in friendly words, and nothing is saved until the design is right.

{usr} is not a placeholder that works in this design.
how to fix: use one of these: {user} {server}. check the spelling and the curly brackets.

this design must keep {reason}.
how to fix: write {reason} somewhere in a text, then save again.

example.com/a.png is not a link that works.
how to fix: a link must start with https://

a section needs a picture or a button on the right.
how to fix: add a picture link, or a button label and link.

the text has 4120 letters. the limit is 4000.
how to fix: make the text shorter or remove a block.

that is a discord attachment link. these links stop working after a while.
how to fix: use a link from your own website or an image host. uploading a picture comes in a later step.

that file is not a picture balqis can use.
how to fix: use a real png, jpg, gif or webp file. renaming another file does not work.

ready to design?

add balqis to your server, then make your first design with /template create.

add to server