Перейти к содержимому

Своя Nani Pix

Nani Pix целиком работает в Docker: её контейнер и база данных MariaDB, связанные файлом docker-compose.yml из репозитория. На этой странице — как поднять свою копию с нуля.

  • Машина с Docker и плагином Docker Compose (docker compose version должна работать).
  • Аккаунт в Telegram.

На саму машину больше ничего ставить не нужно. В Docker-образе уже есть сборка ffmpeg, которой Nani Pix рендерит видео с раскрытием ответа в конце раунда.

  1. Откройте чат с @BotFather и отправьте /newbot.
  2. Следуя подсказкам, выберите имя и username, который заканчивается на bot.
  3. BotFather пришлёт токен вида 123456789:AAExampleTokenTextHere. Это ваш BOT_TOKEN. Храните его в секрете: у кого токен, тот управляет ботом.
  1. Создайте группу в Telegram или возьмите существующую и включите в ней темы (Настройки группы → Темы). Nani Pix пишет в одну конкретную тему, а не в общий чат.
  2. Добавьте бота в группу и сделайте его админом хотя бы с правом «Закреплять сообщения». Nani Pix закрепляет картинку текущего раунда; без этого права она просто не закрепляет.
  3. Создайте или выберите тему, в которой будет идти игра.

Пока Nani Pix не запущена (чтобы обновления бота больше никто не забирал), отправьте в игровой теме любую команду, например /start. То, что никто не ответит, — нормально. Затем откройте в браузере этот адрес со своим настоящим токеном:

https://api.telegram.org/bot<BOT_TOKEN>/getUpdates

Найдите в ответе это сообщение и возьмите:

  • result[].message.chat.id — это ваш GROUP_CHAT_ID, отрицательное число вроде -1001234567890.
  • result[].message.message_thread_id — это ваш GAME_TOPIC_ID.

Нужна именно команда: по умолчанию боты в группах получают только команды, ответы на свои сообщения и упоминания.

Скопируйте пример файла настроек и заполните его (все настройки — в разделе Настройки):

Окно терминала
cp .env.example .env

Сборка из исходников:

Окно терминала
docker compose build
docker compose up -d
docker compose logs -f bot

Или возьмите готовый образ: в docker-compose.yml замените у сервиса bot строку build: . на image: ghcr.io/sm-steel/nani-pix-bot:X.Y.Z (доступные версии — на странице Releases) и выполните те же команды, кроме docker compose build.

Nani Pix сама обновляет базу данных при каждом запуске, дождавшись готовности MariaDB, так что отдельного шага миграции нет. Когда она запустится, в логах будет видно, как она опрашивает Telegram. Отправьте /version в своей теме, чтобы проверить, что она отвечает.

База хранит данные в Docker-томе mariadb_data. Nani Pix подключается к ней по сети Compose как mariadb:3306, а не localhost.