Skip to main content

Stored data

Read and write per-server key-value records inline from a response script.
Database tags run inline: they execute where they sit in the script and render their result in place. Reads print the value; writes print nothing.
  • Separator: colons, not &&{db.get:(namespace):(key)}.
  • Prefixes: db. and customdb. are interchangeable.
  • Scope: every record is keyed by server, so one guild can never read another’s data.
  • Namespaces: a free-form label you choose (notes, points, config) that groups related keys.
Namespaces and keys cannot contain a colon. Values can contain anything, including further text.

Tag reference

Prints the stored value, or nothing at all if the key doesn’t exist.

Read-after-write in one command

Inline tags execute left to right, so a {db.set} earlier in the script is visible to a {db.get} later in the same script:
This only holds for inline db.* tags. The {customdb:set ...} action runs after all inline tags, so a {db.get} in the same script would still show the old value.

Inline tags versus actions

Inline tags are not permission-gated, but they cannot be injected either — braces in anything a member types are neutralised before the script is parsed. See User input is inert.