Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

REA Schedule Bot

Telegram-бот для ежедневной рассылки расписания занятий РЭУ им. Плеханова.

Возможности

  • 📚 Автоматическая рассылка расписания каждое утро в 7:00 МСК
  • 🔍 Получение расписания по запросу /schedule
  • 🏫 Поддержка любых групп с rasp.rea.ru
  • 📊 Встроенная аналитика (DAU, события, статистика)
  • ⚡ Оптимизация ресурсов: кэширование, пакетная загрузка по группам

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

1. Создай бота

Получи токен у @BotFather в Telegram.

2. Локальный запуск

# Клонировать репозиторий
git clone https://github.com/BOSSincrypto/rea-schedule-bot.git
cd rea-schedule-bot

# Установить зависимости
pip install .

# Установить токен
export TELEGRAM_BOT_TOKEN=your-token-here

# Запустить
python -m bot.main

3. Docker

docker build -t rea-schedule-bot .
docker run -d \
  -e TELEGRAM_BOT_TOKEN=your-token \
  -v bot-data:/data \
  rea-schedule-bot

Деплой на Fly.io (бесплатно)

# Установить flyctl: https://fly.io/docs/flyctl/install/
flyctl auth login

# Создать приложение
flyctl launch --no-deploy

# Создать том для БД
flyctl volumes create bot_data --size 1 --region ams

# Установить токен
flyctl secrets set TELEGRAM_BOT_TOKEN=your-token
flyctl secrets set ADMIN_CHAT_ID=your-telegram-id

# Деплой
flyctl deploy

Команды бота

Команда Описание
/start Начать работу
/schedule Расписание на сегодня
/group Показать текущую группу
/unsubscribe Отписаться от рассылки
/help Справка
/stats Статистика (только админ)
/cleanup Очистка старой аналитики (только админ)

Архитектура

bot/
├── main.py        — Точка входа, polling + APScheduler
├── handlers.py    — Обработчики команд Telegram
├── parser.py      — Парсинг HTML расписания + кэш
├── scheduler.py   — Ежедневная пакетная рассылка
└── database.py    — SQLite (WAL mode) + аналитика

Оптимизации

  • Кэширование: расписание кэшируется на 30 мин — одинаковые группы не загружаются повторно
  • Пакетная рассылка: расписание загружается один раз на группу, затем отправляется всем подписчикам
  • SQLite WAL: минимальные блокировки при параллельном чтении/записи
  • Memory-bounded cache: автоматическая очистка при > 100 записей
  • Аналитика с TTL: старые записи автоматически удаляются (90 дней)

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

Переменная Обязательная Описание
TELEGRAM_BOT_TOKEN Да Токен бота от BotFather
ADMIN_CHAT_ID Нет Telegram ID админа для /stats
DB_PATH Нет Путь к SQLite файлу (по умолчанию: data/bot.db)

Лицензия

MIT

About

Telegram-бот для ежедневной рассылки расписания занятий РЭУ им. Плеханова.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages