Botxona

botxona.yaml — полная схема

botxona.yaml — необязательный файл в корне архива (botxona.yml тоже принимается). Он нужен, чтобы вы сами явно указали то, что система не может определить автоматически. Бот работает и без этого файла — система попытается определить всё автоматически.

Поля

runtime: python       # python | node — укажите явно, если язык не определяется автоматически
entry: main.py        # файл для запуска (работает вместе с runtime)
start: python -u main.py --prod  # полная команда — вместо entry, с дополнительными аргументами
always_on: true       # true — бот всегда включён, false — засыпает при неактивности
ПолеТипОписание
runtimepython \node \goПолезно, если язык не определяется автоматически (например, есть файлы обоих языков)
entryстрокаПуть к файлу запуска, например src/main.py (для Go — путь к пакету, например ./cmd/bot)
startстрокаПолная команда запуска — когда нужны аргументы или особый скрипт
always_ontrue/falseСделать бота всегда включённым или, наоборот, разрешить ему засыпать, даже если в нём есть планировщик

Порядок приоритета

  1. Если есть start — используется именно эта команда, entry игнорируется.
  2. Иначе, если есть entry — этот файл запускается стандартной командой для runtime (python -u <entry>, node <entry> или, для Go, пакет <entry> собирается в бинарный файл).
  3. Если нет ни того, ни другого — система определяет точку входа автоматически: по main.py/bot.py/app.py (Python) или по скрипту "start" / полю main в package.json (Node.js) или, для Go, по пакету main в корне (main.go) / единственной папке cmd/<имя>/. Go-проект определяется по go.mod в корне (или по runtime: go / golang).

Если задан always_on, он определяет начальное значение режима «Авто» в разделе Настройки → Режим работы на странице бота — позже пользователь может изменить его вручную в панели (Сон и пробуждение).

Примеры

Простой Python-бот с нестандартным именем файла:

runtime: python
entry: src/bot.py

Go с пакетом cmd/bot:

runtime: go
entry: ./cmd/bot

Node.js с особой командой запуска:

start: node --experimental-modules src/index.mjs

Бот, который должен быть всегда включён (например, отправляет напоминания об оплате):

always_on: true

Следующий шаг

Подробно о точке входа и библиотеках: 6 правил. О переменных окружения: Переменные окружения.