Azimkin 25380e7c1f Add schedule examples and cron testing utility
- Add SCHEDULE_EXAMPLES.md with ready-to-use schedule templates
- Add test_cron.py utility for testing cron expressions
- Include examples for daily, weekly, interval-based schedules
- Add timezone conversion examples
- Add testing recommendations

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-05 12:19:50 +02:00
2026-04-05 12:18:08 +02:00

Would You Rather Bot

Telegram бот для проведения игр "Would You Rather" с автоматической публикацией вопросов по расписанию.

Возможности

  • 🎮 Публикация вопросов "Would You Rather" в виде опросов
  • 📊 Статистика ответов на вопросы
  • ⏰ Автоматическая публикация по расписанию (cron)
  • 🛠️ Управление вопросами и расписаниями через Telegram
  • 📝 Поддержка множественных источников вопросов через API

Основные команды

  • /start - Начало работы с ботом
  • /manage - Панель управления (только для администраторов)
    • Добавление/редактирование/удаление вопросов
    • Просмотр статистики
    • Управление расписаниями публикаций

Система расписаний

Бот поддерживает автоматическую публикацию вопросов по расписанию в формате cron.

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

  1. Откройте /manage → ⏰ Расписания
  2. Нажмите ➕ Добавить расписание
  3. Отправьте: Ежедневно в 12:00 | 0 12 * * * | 1

Примеры расписаний:

  • 0 9 * * 1-5 - каждый будний день в 9:00 UTC
  • 0 */4 * * * - каждые 4 часа
  • 0 12 * * 6,0 - каждые выходные в 12:00 UTC

📖 Подробное руководство: SCHEDULER_GUIDE.md

Установка и запуск

Требования:

  • Python 3.11+
  • Telegram Bot Token
  • Telegram API credentials (api_id, api_hash)

Шаги установки:

  1. Клонируйте репозиторий:
git clone <repository-url>
cd WouldYouRather
  1. Создайте виртуальное окружение и установите зависимости:
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
# или
.venv\Scripts\activate  # Windows

pip install -r requirements.txt
  1. Создайте файл .env с вашими credentials:
APP_ID=your_app_id
API_HASH=your_api_hash
BOT_TOKEN=your_bot_token
SESSION_NAME=would-you-rather-bot
  1. Настройте data/settings.toml:
# ID администраторов бота
admin_ids = [123456789]

# ID каналов для публикации
poll_channel_ids = [-1001234567890]

# Источники вопросов (опционально)
[[question_apis]]
name = "default-source"
url = "https://example.com/api/questions/random"
handler = "default"
  1. Запустите бота:
python main.py

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

WouldYouRather/
├── bot/                    # Telegram бот
│   ├── bot.py             # Основной файл бота
│   ├── commands.py        # Команды бота
│   ├── manage.py          # Панель управления
│   └── scheduler.py       # Система расписаний
├── game/                   # Бизнес-логика
│   ├── database.py        # Работа с БД
│   ├── game.py            # Игровая логика
│   ├── settings.py        # Настройки приложения
│   └── api_service.py     # API для загрузки вопросов
├── data/                   # Данные (БД, сессии, конфиг)
│   ├── game.sqlite3       # База данных
│   └── settings.toml      # Конфигурация
├── main.py                # Точка входа
└── requirements.txt       # Зависимости

База данных

Бот использует SQLite для хранения:

  • Вопросов и ответов
  • Статистики голосований
  • Расписаний публикаций
  • Истории запусков расписаний

Структура создается автоматически при первом запуске.

Возможности управления

Вопросы:

  • ✅ Просмотр всех вопросов с пагинацией
  • ✅ Добавление новых вопросов
  • ✅ Редактирование существующих вопросов
  • ✅ Просмотр статистики по вопросам

Расписания:

  • ✅ Создание расписаний с cron-выражениями
  • ✅ Редактирование расписаний
  • ✅ Включение/выключение расписаний
  • ✅ Удаление расписаний
  • ✅ Просмотр всех расписаний

Логирование

Логи сохраняются в data/logs/ с ротацией:

  • bot.log - основной лог
  • Автоматическая ротация по дням
  • Хранение последних 7 дней

Лицензия

MIT License

Автор

Developed by @azimkin.dev

Description
телеграм-бот с игрой Would you rather?
Readme 107 KiB
Languages
Python 100%