Skip to content

vdistortion/doubletardigrade-bot

Repository files navigation

👾 doubletardigrade-bot 👾

Бот для ВКонтакте, который показывает тихоходку дня и ведёт квиз. По умолчанию бот не активирован: он отвечает только администраторам на команду /start. После включения режима для сообщений и/или чатов бот можно запускать командой /start уже для обычных пользователей в соответствующем контексте.

📋 Что умеет бот

Меню пользователя

  • 👾 Тихоходка дня: бот выбирает случайную тихоходку из базы и присылает её изображение с описанием. Для каждого пользователя доступна одна новая тихоходка в сутки.
  • 🔬 Квиз / Продолжить квиз: запускает викторину. Бот присылает вопрос и варианты ответа в виде кнопок. Если квиз начат, предлагает продолжить.
  • ⚙️ Админ-панель: доступна только администраторам. Открывает настройки и служебные функции бота.

Админ-панель

Админ-панель открывается только в личных сообщениях. В чатах бот работает как обычный пользователь и служебные кнопки не показывает. Администраторами считаются владелец группы, администраторы сообщества и пользователи из SUPER_ADMINS. Модераторы и прочие роли в этот список не входят.

  • 🔄 Синхронизация: бот заходит в указанный альбом группы, считывает все фотографии и подписи к ним, после чего обновляет базу тихоходок.
    • чтобы сохранить/сменить альбом для синхронизации, отправьте боту ссылку на альбом группы.
    • ⚠️ Важно: бот работает только в режиме чтения. Он не удаляет, не перемещает и не редактирует фотографии в альбоме.
  • 🧪 Тест выдачи: показывает случайную тихоходку из базы, не дожидаясь следующего дня.
  • 📥 Импорт вопросов для квиза:
    • Отправьте боту ссылку на опубликованную Google Таблицу, и он автоматически загрузит вопросы.
    • После первого импорта ссылка сохраняется — появляется кнопка 🔄 Обновить квиз для обновления вопросов в один клик.
    • Если квиз пуст, доступна кнопка 🧪 Загрузить демо‑вопросы — загружает 4 тестовых вопроса.
    • Формат каждой строки Вопрос, НомерПравильногоОтвета, Вариант1, Вариант2...
    • Пример строки: Кто такие тихоходки?, 1, Микроскопические животные, Вид рыб, Пришельцы, Насекомые.
    • Вариантов ответа может быть любое количество.
  • ❓ Справка: выводит краткую инструкцию по управлению ботом.

🛠 Настройка и запуск

Бот рассчитан на запуск на собственном VPS с использованием Docker и PostgreSQL.

1. Подготовка ВКонтакте

Для работы бота нужно настроить группу ВКонтакте и получить ключи доступа.

  • Ключ доступа группы (GROUP_TOKEN): в настройках группы откройте Управление → Дополнительно → Работа с API → Ключи доступа и создайте ключ. Дайте доступ к управлению сообществом и сообщениям сообщества.
  • Long Poll API: включите Long Poll API в разделе Управление → Работа с API → Long Poll API и разрешите Входящее сообщение.
  • Сообщения для бота: включите сообщения для бота в разделе Управление → Сообщения → Настройки для бота.
  • Личный ключ (USER_TOKEN): нужен для доступа к фотографиям из альбомов. Создайте приложение. В настройках приложения скопируйте Сервисный ключ (Настройки -> Разработка -> Ключи доступа).

2. Переменные окружения

Создайте файлы .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.

3. Подготовка VPS и Docker

  1. Установите Node.js, NPM, Docker и Docker Compose.
apt update && apt upgrade -y && apt install npm -y && curl -fsSL https://get.docker.com | sh
  1. Склонируйте репозиторий:
git clone https://github.com/vdistortion/doubletardigrade-bot.git
cd doubletardigrade-bot

4. Настройка SSH-доступа для GitHub Actions

GitHub 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...

5. Запуск бота

  • для ветки main: npm run docker:main:up
  • для ветки release: npm run docker:release:up
  • для локальной разработки: npm run docker:dev:up

⌨️ Ручные команды для админов

  • /start — открыть главное меню.
  • /clearkeyboard — скрыть обычную клавиатуру бота (в чате только для админов).
  • Отправьте ссылку на альбом группы — сменить альбом для синхронизации.
  • Отправьте ссылку на Google Таблицу — загрузить вопросы квиза.

Права на проект: администраторы сообщества «Фан-клуб Tardigrade Inferno».
Последняя версия исходного кода: скачать архив.

About

Интерактивный VK-бот на TypeScript с квизами, «тихоходкой дня», админ-панелью и синхронизацией альбомов сообщества. Использует vk-io, PostgreSQL и Docker.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors