Своя Nani Pix
Nani Pix целиком работает в Docker: её контейнер и база данных MariaDB, связанные
файлом docker-compose.yml из репозитория. На этой странице — как поднять свою
копию с нуля.
Что понадобится
Заголовок раздела «Что понадобится»- Машина с Docker и плагином Docker Compose (
docker compose versionдолжна работать). - Аккаунт в Telegram.
На саму машину больше ничего ставить не нужно. В Docker-образе уже есть сборка
ffmpeg, которой Nani Pix рендерит видео с раскрытием ответа в конце раунда.
1. Создайте бота в Telegram
Заголовок раздела «1. Создайте бота в Telegram»- Откройте чат с @BotFather и отправьте
/newbot. - Следуя подсказкам, выберите имя и username, который заканчивается на
bot. - BotFather пришлёт токен вида
123456789:AAExampleTokenTextHere. Это вашBOT_TOKEN. Храните его в секрете: у кого токен, тот управляет ботом.
2. Настройте группу и тему
Заголовок раздела «2. Настройте группу и тему»- Создайте группу в Telegram или возьмите существующую и включите в ней темы (Настройки группы → Темы). Nani Pix пишет в одну конкретную тему, а не в общий чат.
- Добавьте бота в группу и сделайте его админом хотя бы с правом «Закреплять сообщения». Nani Pix закрепляет картинку текущего раунда; без этого права она просто не закрепляет.
- Создайте или выберите тему, в которой будет идти игра.
3. Узнайте id группы и темы
Заголовок раздела «3. Узнайте id группы и темы»Пока 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.
Нужна именно команда: по умолчанию боты в группах получают только команды, ответы на свои сообщения и упоминания.
4. Настройте
Заголовок раздела «4. Настройте»Скопируйте пример файла настроек и заполните его (все настройки — в разделе Настройки):
cp .env.example .env5. Запустите
Заголовок раздела «5. Запустите»Сборка из исходников:
docker compose builddocker compose up -ddocker 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.
Что дальше
Заголовок раздела «Что дальше»- Настройки: все параметры в
.env. - Привязка MyAnimeList: по желанию, позволяет игрокам выбирать аниме из своего списка на MyAnimeList.
- Обновления и проверка здоровья.
- Настройка группы: что могут админы группы, когда Nani Pix уже работает.
