Skip to content

gramrate/Loud_Question

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LoudQuestionBot

Telegram-бот с режимом игры по вопросам и админ-панелью для управления своими вопросами.

Возможности

  • Игра: получить вопрос, показать ответ, перейти к следующему.
  • Команды: создать команду, вступить по диплинку или UUID-коду, выйти из команды.
  • Команды: создатель может кикать участников без бана.
  • Админка: добавить вопрос, просмотреть свои вопросы, отредактировать, удалить.
  • Главное меню через /menu.
  • При /start бот отправляет приветствие и сразу показывает меню.
  • Кнопка Админка в меню видна только пользователям из ADMIN_IDS.

Логика показа вопросов

  • Вопросы и команды используют UUID как идентификатор.
  • Если пользователь без команды: учет просмотра ведется по user_id.
  • Если пользователь в команде: учет просмотра ведется по team_id, и список отвеченных вопросов общий для всех участников команды.
  • Вопрос, который уже был показан в этой области видимости (пользователь или команда), повторно не показывается.
  • Вопросы, созданные самим пользователем, ему в игре не показываются.
  • При создании вопроса автор автоматически помечается как уже видевший этот вопрос (персонально).

Стек

Быстрый старт

  1. Скопируйте пример переменных окружения:
cp .env.example .env
  1. Заполните .env:
  • BOT_TOKEN — токен Telegram-бота
  • ADMIN_IDS — список Telegram user_id админов через запятую
  • LOG_CHAT_IDchat_id служебного чата логов (для событий первого /start и команды /get)
  • TELEGRAM_PROXY_URL — необязательный прокси для Telegram API, например http://127.0.0.1:8080 или socks5://127.0.0.1:1080
  • POSTGRES_* и POSTGRES_DSN — настройки Postgres
  • REDIS_ADDR, REDIS_PASSWORD, REDIS_DB — настройки Redis
  1. Запустите проект:
docker compose up -d --build
  1. Проверьте статус и логи:
docker compose ps
docker compose logs -f bot

Команды бота

  • /start — приветствие + показ главного меню
  • /start jointeam-<uuid> — вход в команду по диплинку
  • /menu — открыть главное меню
  • /jointeam <uuid> — вход в команду по UUID вручную
  • /get <id> — команда для лог-чата: показать данные пользователя по Telegram id

Полезные Docker-команды

Пересоздать контейнеры с пересборкой:

docker compose up -d --build --force-recreate

Полная очистка (контейнеры, образы, тома) и чистая пересборка:

docker compose down --rmi all --volumes --remove-orphans
docker builder prune -af
docker compose build --no-cache
docker compose up -d

Структура проекта

  • internal/adapters/controller/telegram — Telegram-контроллер и меню
  • internal/adapters/repository/postgres — вопросы и история просмотренных вопросов
  • internal/adapters/repository/redisstate — хранение состояния форм админки
  • internal/domain/service — бизнес-логика игры/админки/доступа
  • internal/domain/schema — доменные модели

Будущие обновления

  • Добавить отображение Telegram-имен участников в списке команды
  • ✅~~Добавить добавление вопросов Пуллом (до 25)~~✅
  • Создание qr-code для присоединения в команду
  • Профили пользователей и статистика
  • Создание паков вопросов (айти пак, школьный пак)
  • Достижения

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors