Syntax and separators
Naming rules, the definition separator, and how argument declarations are parsed.Every
;cc set looks like this:
Command names
- Allowed characters: lowercase letters, digits,
_, and-(regex^[a-z0-9_-]{1,32}$). - Length: 1–32 characters.
- Collisions: the name cannot match any built-in raze command, nor the reserved names
cc,customcommand, orcustomcommands.
;cc set Greet ... saves as greet.
Separators
The separator marks where the declaration ends and the response begins. Any one of these works:
Only the first standalone occurrence counts. Later occurrences are ordinary text in your response, so an arrow inside the response is safe:
Argument declarations
Declarations go between the name and the separator. There are three kinds.Required argument
Required argument
Declared as
(name). Captures exactly one word. If the invoker leaves it out, the command replies with a missing-argument error and stops.@you hugs @wanderer!
Optional argument
Optional argument
Declared as
[name]. Captures one word if present, otherwise resolves to an empty string. Pair it with a fallback so it never renders blank.Hello stranger!
Rest argument
Rest argument
Declared as
(name...) or [name...]. Captures everything remaining on the line, spaces included. A rest argument must be the last declaration.hello everyone, welcome back
Angle brackets are accepted as a legacy alias for required arguments —
<member> behaves exactly like (member), and <message...> like (message...). New commands should use parentheses; brackets must match, so (member> is rejected.How input is split
Arguments are filled left to right:- Single-word arguments take the next whitespace-separated word.
- A rest argument takes everything still unconsumed, trimmed.
- Leftover text beyond your declarations is dropped from named arguments — but it is still reachable through
{args}and the positional{1},{2}, … placeholders.
;cc set report (target) (category) [details...] -- ...:
Declaration names must start with a letter and may contain letters, digits,
_, and -. Mismatched brackets like <member] are rejected.
