botxona.yaml — full schema
botxona.yaml is an optional file at the root of the archive (botxona.yml is accepted too). It lets you state explicitly what the system can't detect on its own. The bot works without it — the system will try to detect things automatically.
Fields
runtime: python # python | node — set explicitly if the language isn't detected automatically
entry: main.py # file to run (used together with runtime)
start: python -u main.py --prod # full command — instead of entry, with extra arguments
always_on: true # true — bot is always on, false — sleeps when idle
| Field | Type | Description | ||
|---|---|---|---|---|
runtime | python \ | node \ | go | Useful when the language can't be detected automatically (e.g. files for both languages are present) |
entry | string | Path to the file to run, e.g. src/main.py (for Go — the package path, e.g. ./cmd/bot) | ||
start | string | Full start command — when you need arguments or a custom script | ||
always_on | true/false | Keep the bot always on or, conversely, let it sleep even if it has a scheduler |
Precedence
- If
startis set — that exact command is used andentryis ignored. - Otherwise, if
entryis set — that file is run with the standard command for theruntime(python -u <entry>,node <entry>, or for Go the<entry>package is built into a binary). - If neither is set — the system detects the entry point automatically via
main.py/bot.py/app.py(Python) or the"start"script /mainfield inpackage.json(Node.js), or for Go themainpackage in the root (main.go) / a singlecmd/<name>/folder. A Go project is detected by ago.modin the root (orruntime: go/golang).
If always_on is set, it determines the initial value of the "Auto" mode under Settings → Run mode on the bot page — the user can later change it manually in the dashboard (Sleep and wake-up).
Examples
A simple Python bot with a non-standard file name:
runtime: python
entry: src/bot.py
Go with a cmd/bot package:
runtime: go
entry: ./cmd/bot
Node.js with a custom start command:
start: node --experimental-modules src/index.mjs
A bot that must always be on (e.g. it sends payment reminders):
always_on: true
Next step
Full details on entry points and libraries: 6 rules. On environment variables: Environment variables.