Building

Variables and data

Use trigger inputs, stored results and persistent values without guessing names.

Use single braces

Bottly flow text uses {name}, for example Hello {username}. Do not copy the double-brace syntax from unrelated template engines. Choose suggestions from the variable picker and preserve the exact spelling.

Know whose data you use

{author} is the person who invoked a command. {user} can refer to a selected user option instead. {server.name} needs server context; it is not available in a DM in the same way. {message.content} belongs to message events and may need Message Content intent.

Store a result before reading it

A data/API block may have Store as. If it stores under profile, read only the output fields supported by that block, using that prefix. Connect the reader after the writer, on the branch that succeeded. A variable set on a different branch is not guaranteed to exist.

Local versus persistent

Set Variable is for the current run. Shared-value blocks explicitly support later runs. Bottly Storage is for bot-owned records you need to look up, count, update or delete. Choose the smallest persistence scope that meets your need.

Secret values

{env.NAME} refers to supported bot/plugin settings in runtime contexts. Do not send it to Discord or Log Event to check whether it works. Test the authorized API operation and handle its failure output instead.

Troubleshooting

If text is empty or unresolved, check its source, event context, option name, prefix and execution order. Start with a simple text value before adding nested fields or API calls.