Skip to content

ArtemChik103/telegram-schedule-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎓 Телеграм-бот расписания АмГУ (ИС231)

Python python-telegram-bot SQLite License

Продвинутый телеграм-бот для получения расписания занятий группы ИС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 — для асинхронной обработки запросов.

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

1. Подготовка

Клонируйте репозиторий и создайте виртуальное окружение:

git clone https://github.com/ВАШ_НИКНЕЙМ/ВАШ_РЕПОЗИТОРИЙ.git
cd ВАШ_РЕПОЗИТОРИЙ

python3 -m venv venv
source venv/bin/activate  # Для Linux/macOS
# venv\Scripts\activate   # Для Windows

2. Установка зависимостей

Обратите внимание на кавычки, они обязательны для установки расширенных функций библиотеки:

pip install "python-telegram-bot[job-queue]" requests python-dotenv

3. Конфигурация (.env)

Создайте файл .env в корне проекта и заполните его:

TELEGRAM_BOT_TOKEN="ВАШ_ТОКЕН_ОТ_BOTFATHER"
ADMIN_ID="ВАШ_TELEGRAM_ID"  # Числовой ID (можно узнать у @userinfobot)

4. Запуск

python bot.py

☁️ Развертывание на сервере (VPS)

Для стабильной работы 24/7 рекомендуется использовать Systemd (вместо crontab).

  1. Загрузите файлы бота на сервер в папку /root/amsu_bot.
  2. Создайте файл службы:
    sudo nano /etc/systemd/system/amsu_bot.service
  3. Вставьте следующую конфигурацию (отредактируйте пути при необходимости):
    [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
  4. Активируйте и запустите:
    sudo systemctl daemon-reload
    sudo systemctl enable amsu_bot
    sudo systemctl start amsu_bot

Теперь бот будет автоматически перезапускаться при падениях или перезагрузке сервера.

📜 Лицензия

MIT License.

About

Telegram bot

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages