Skip to content

Телеграм-бот для получения актуального расписания занятий и напоминаний о ближайших парах. Поддерживает загрузку расписания в формате Excel и уведомления о расписании. Включает административные функции для управления пользователями и расписанием.

License

Notifications You must be signed in to change notification settings

brandonzorn/ASU_Schedule

Repository files navigation

📅 Telegram-бот для уведомлений о расписании

Этот проект представляет собой Telegram-бота, который помогает пользователям получать актуальное расписание занятий, напоминания о ближайших занятиях, а также управлять подпиской на уведомления.

🚀 Возможности

  • 📆 Получение расписания на сегодня / завтра или выбранный день.
  • ⏰ Уведомления о расписании в заданное время (08:00 и/или 20:00).
  • 📣 Уведомления перед началом следующего занятия.
  • 👤 Регистрация и отображение информации о пользователе.
  • 📄 Загрузка расписания из Excel (для админов).
  • 🛠 Административные команды:
    • Просмотр всех пользователей.
    • Статистика пользователей.
    • Удаление всех расписаний.
    • Отключение ежедневных уведомлений.

🛠 Стек технологий

  • Python 3.11+
  • python-telegram-bot v21+
  • SQLAlchemy для работы с базой данных
  • SQLite (или другая СУБД по желанию)

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

asuschedule/
├── handlers/              # Обработчики команд и сообщений
├── schedules/             # Генерация текста расписаний
├── models.py              # SQLAlchemy-модели
├── database.py            # Сессия БД
├── consts.py              # Константы (расписание занятий, часовой пояс)
├── config.py              # BOT_TOKEN и другие настройки
├── utils.py               # Вспомогательные функции
└── main.py                # Точка входа

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

  1. Клонируй репозиторий:

    git clone https://github.com/brandonzorn/ASU_Schedule.git
    cd ASU_Schedule
  2. Создай виртуальное окружение и активируй его:

    python -m venv venv
    source venv/bin/activate  # Windows: venv\Scripts\activate
  3. Установи зависимости:

    pip install -r requirements.txt
  4. Настрой .env:

    BOT_TOKEN=your_telegram_bot_token
    USE_ALTERNATE_LESSON_TIMES=False
    INVERT_WEEK_PARITY=True
    
    DATABASE_NAME=database

    Описание переменных:

    Переменная Тип Описание
    BOT_TOKEN строка Токен Telegram-бота, полученный у BotFather.
    USE_ALTERNATE_LESSON_TIMES True / False Включение альтернативного расписания времени пар (настраивается в consts.py).
    INVERT_WEEK_PARITY True / False Инвертирует чётность недели. Используется, если первая неделя в учебном году считается нечётной в вашей системе, а бот определяет как чётную (или наоборот).
    DATABASE_NAME строка Имя файла SQLite-базы данных (например: database, что даст файл database.db).

  5. Запусти бота:

    cd asuschedule
    python main.py

✅ Регистрация пользователей

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

💡 Примеры команд

  • /info — информация о пользователе.
  • /schedule — расписание на сегодня.
  • /schedule_next — расписание на завтра.

📚 Структура файла расписания

Файл содержит расписание занятий студентов в формате Excel (.xlsx). Каждая строка представляет собой одну пару, привязанную к определённому курсу, группе, дню недели и номеру пары.

🔠 Названия столбцов и их описание:

Поле Описание
Курс Номер курса (например, 3 для третьего курса)
Группа Обозначение группы (например, Ф)
Подгруппа Номер подгруппы, если есть (может быть пустым)
День недели День недели, в котором проводится пара (пн, вт, ср, чт, пт, сб)
Номер пары Порядковый номер пары в учебном дне (1, 2, 3, 4, 5, 6)
Предмет Название дисциплины
Преподаватель ФИО преподавателя (может быть пустым)
Кабинет Номер аудитории (может быть пустым)
Формат Тип занятия: Лекция, Семинар, Лаб. раб., и т.п. (может быть пустым)
Четн. Неделя Пара проводится в чётную (0) или нечётную (1) неделю
Факультет Название факультета (например, ИНЖЕНЕРНО-ФИЗИЧЕСКИЙ)

⚙️ Загрузка файла

Чтобы загрузить расписание:

  1. Откройте чат с ботом.
  2. Отправьте Excel-файл (.xlsx) с расписанием в чат как документ (не как текст).
  3. Бот автоматически обработает файл и подготовит данные к дальнейшей работе.

🛡️ Администрирование

Доступ к административным командам и загрузке расписания предоставляется по условиям, реализованным в staff_handlers.py.

📜 Лицензия

MIT License.

About

Телеграм-бот для получения актуального расписания занятий и напоминаний о ближайших парах. Поддерживает загрузку расписания в формате Excel и уведомления о расписании. Включает административные функции для управления пользователями и расписанием.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published