Продвинутый телеграм-бот для получения расписания занятий группы ИС231 Амурского Государственного Университета.
Бот спроектирован для работы в условиях плохого интернет-соединения и на удаленных серверах. Использует асинхронное фоновое обновление данных, локальную базу данных SQLite и автоматически определяет текущий статус пары (идет занятие, перемена или окно).
- 🚀 Мгновенный ответ (Zero-Latency): Бот не обращается к сайту вуза в момент запроса пользователя. Данные берутся из локальной БД за 0.001 сек.
- 🔄 Фоновое обновление: Бот самостоятельно синхронизирует расписание каждые 20 минут в фоновом режиме.
- 📍 Функция "Где я сейчас?": Умное определение текущего статуса:
- "Сейчас идет 3-я пара..."
- "Перемена, следующая пара в 405 ауд..."
- "Пары закончились, отдыхай!"
- 🛡️ Отказоустойчивость: Если сервер АмГУ упал, бот продолжит выдавать сохраненное расписание из SQLite.
- 🕒 Timezone Aware: Принудительно работает в часовом поясе
Asia/Yakutsk(UTC+9), независимо от локации сервера. - 👮 Администрирование: Автоматическая отправка логов ошибок в личку администратору.
Команда "Сейчас":
☕ Сейчас перемена (до 14:00)
🔜 Следующая пара (4-я):
📚 Физкультура
🚪 с/з (ЗТ)
Команда "На завтра":
Вторник (Неделя 2)
🔔 2. 09:55-11:25
📚 *Предмет:* Разработка программных модулей
🧑🏫 *Преподаватель:* Рябова Светлана Николаевна
🚪 *Аудитория:* 408 (ЗТ)
- Python 3.10+
- python-telegram-bot (с расширением
JobQueueиAPScheduler) - SQLite3 — для надежного кэширования данных.
- AsyncIO — для асинхронной обработки запросов.
Клонируйте репозиторий и создайте виртуальное окружение:
git clone https://github.com/ВАШ_НИКНЕЙМ/ВАШ_РЕПОЗИТОРИЙ.git
cd ВАШ_РЕПОЗИТОРИЙ
python3 -m venv venv
source venv/bin/activate # Для Linux/macOS
# venv\Scripts\activate # Для WindowsОбратите внимание на кавычки, они обязательны для установки расширенных функций библиотеки:
pip install "python-telegram-bot[job-queue]" requests python-dotenvСоздайте файл .env в корне проекта и заполните его:
TELEGRAM_BOT_TOKEN="ВАШ_ТОКЕН_ОТ_BOTFATHER"
ADMIN_ID="ВАШ_TELEGRAM_ID" # Числовой ID (можно узнать у @userinfobot)python bot.pyДля стабильной работы 24/7 рекомендуется использовать Systemd (вместо crontab).
- Загрузите файлы бота на сервер в папку
/root/amsu_bot. - Создайте файл службы:
sudo nano /etc/systemd/system/amsu_bot.service
- Вставьте следующую конфигурацию (отредактируйте пути при необходимости):
[Unit] Description=AmSU Schedule Bot After=network.target [Service] User=root WorkingDirectory=/root/amsu_bot ExecStart=/root/amsu_bot/venv/bin/python3 /root/amsu_bot/bot.py Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
- Активируйте и запустите:
sudo systemctl daemon-reload sudo systemctl enable amsu_bot sudo systemctl start amsu_bot
Теперь бот будет автоматически перезапускаться при падениях или перезагрузке сервера.
MIT License.