Бот для ВКонтакте, который показывает тихоходку дня и ведёт квиз.
По умолчанию бот не активирован: он отвечает только администраторам на команду /start. После включения режима для сообщений и/или чатов бот можно запускать командой /start уже для обычных пользователей в соответствующем контексте.
- 👾 Тихоходка дня: бот выбирает случайную тихоходку из базы и присылает её изображение с описанием. Для каждого пользователя доступна одна новая тихоходка в сутки.
- 🔬 Квиз / Продолжить квиз: запускает викторину. Бот присылает вопрос и варианты ответа в виде кнопок. Если квиз начат, предлагает продолжить.
- ⚙️ Админ-панель: доступна только администраторам. Открывает настройки и служебные функции бота.
Админ-панель открывается только в личных сообщениях. В чатах бот работает как обычный пользователь и служебные кнопки не показывает.
Администраторами считаются владелец группы, администраторы сообщества и пользователи из SUPER_ADMINS. Модераторы и прочие роли в этот список не входят.
- 🔄 Синхронизация: бот заходит в указанный альбом группы, считывает все фотографии и подписи к ним, после чего обновляет базу тихоходок.
- чтобы сохранить/сменить альбом для синхронизации, отправьте боту ссылку на альбом группы.
⚠️ Важно: бот работает только в режиме чтения. Он не удаляет, не перемещает и не редактирует фотографии в альбоме.
- 🧪 Тест выдачи: показывает случайную тихоходку из базы, не дожидаясь следующего дня.
- 📥 Импорт вопросов для квиза:
- Отправьте боту ссылку на опубликованную Google Таблицу, и он автоматически загрузит вопросы.
- После первого импорта ссылка сохраняется — появляется кнопка
🔄 Обновить квиздля обновления вопросов в один клик. - Если квиз пуст, доступна кнопка
🧪 Загрузить демо‑вопросы— загружает 4 тестовых вопроса. - Формат каждой строки
Вопрос,НомерПравильногоОтвета,Вариант1,Вариант2... - Пример строки:
Кто такие тихоходки?,1,Микроскопические животные,Вид рыб,Пришельцы,Насекомые. - Вариантов ответа может быть любое количество.
- ❓ Справка: выводит краткую инструкцию по управлению ботом.
Бот рассчитан на запуск на собственном VPS с использованием Docker и PostgreSQL.
Для работы бота нужно настроить группу ВКонтакте и получить ключи доступа.
- Ключ доступа группы (
GROUP_TOKEN): в настройках группы откройте Управление → Дополнительно → Работа с API → Ключи доступа и создайте ключ. Дайте доступ к управлению сообществом и сообщениям сообщества. - Long Poll API: включите Long Poll API в разделе Управление → Работа с API → Long Poll API и разрешите Входящее сообщение.
- Сообщения для бота: включите сообщения для бота в разделе Управление → Сообщения → Настройки для бота.
- Личный ключ (
USER_TOKEN): нужен для доступа к фотографиям из альбомов. Создайте приложение. В настройках приложения скопируйте Сервисный ключ (Настройки -> Разработка -> Ключи доступа).
Создайте файлы .env.main, .env.release и .env.dev на основе .env.example и заполните их значениями:
GROUP_TOKEN: ключ доступа группы.USER_TOKEN: личный ключ доступа.SUPER_ADMINS: список ID администраторов через запятую, например12345,67890.POSTGRES_DB,POSTGRES_USER: обычноpostgres.POSTGRES_PASSWORD: сложный пароль.POSTGRES_HOST: для Docker Compose —db, для локального запуска —localhost.
- Установите Node.js, NPM, Docker и Docker Compose.
apt update && apt upgrade -y && apt install npm -y && curl -fsSL https://get.docker.com | sh- Склонируйте репозиторий:
git clone https://github.com/vdistortion/doubletardigrade-bot.git
cd doubletardigrade-botGitHub Actions подключается к VPS по SSH и запускает деплой. Для этого нужно:
--- На локальной машине ---
Сгенерируйте SSH-ключ и скопируйте его на VPS:
ssh-copy-id user@vps-ipПриватный ключ (id_ed25519) сохраните в GitHub Secrets под именем SSH_PRIVATE_KEY.
Также добавьте в GitHub Secrets: VPS_HOST — IP-адрес или домен вашего VPS VPS_USERNAME — имя пользователя для SSH-подключения
--- На VPS ---
Сгенерируйте SSH-ключ для клонирования репозитория с GitHub:
ssh-keygen -t ed25519 -C "vps-deploy"Добавьте GitHub в список доверенных хостов:
ssh-keyscan github.com >> ~/.ssh/known_hostsУкажите ключ в ~/.ssh/config:
Host github.com
Hostname github.com
User git
IdentityFile ~/.ssh/id_ed25519
--- В настройках репозитория на GitHub ---
Перейдите в Settings -> Deploy keys -> Add deploy key Вставьте публичный ключ VPS (содержимое ~/.ssh/id_ed25519.pub) Права на запись не нужны.
Проверьте, что всё работает:
ssh -T git@github.com
# Ожидаемый ответ: Hi username! You've successfully authenticated...- для ветки
main:npm run docker:main:up - для ветки
release:npm run docker:release:up - для локальной разработки:
npm run docker:dev:up
/start— открыть главное меню./clearkeyboard— скрыть обычную клавиатуру бота (в чате только для админов).- Отправьте ссылку на альбом группы — сменить альбом для синхронизации.
- Отправьте ссылку на Google Таблицу — загрузить вопросы квиза.
Права на проект: администраторы сообщества «Фан-клуб Tardigrade Inferno».
Последняя версия исходного кода: скачать архив.