Этот проект представляет собой 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 # Точка входа
-
Клонируй репозиторий:
git clone https://github.com/brandonzorn/ASU_Schedule.git cd ASU_Schedule -
Создай виртуальное окружение и активируй его:
python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate
-
Установи зависимости:
pip install -r requirements.txt
-
Настрой
.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_TIMESTrue/FalseВключение альтернативного расписания времени пар (настраивается в consts.py). INVERT_WEEK_PARITYTrue/FalseИнвертирует чётность недели. Используется, если первая неделя в учебном году считается нечётной в вашей системе, а бот определяет как чётную (или наоборот). DATABASE_NAMEстрока Имя файла SQLite-базы данных (например: database, что даст файлdatabase.db).
-
Запусти бота:
cd asuschedule python main.py
Пользователь регистрируется при первом взаимодействии с ботом. Только зарегистрированные пользователи могут получать расписание и уведомления.
/info— информация о пользователе./schedule— расписание на сегодня./schedule_next— расписание на завтра.
Файл содержит расписание занятий студентов в формате Excel (.xlsx). Каждая строка представляет собой одну пару, привязанную к определённому курсу, группе, дню недели и номеру пары.
| Поле | Описание |
|---|---|
Курс |
Номер курса (например, 3 для третьего курса) |
Группа |
Обозначение группы (например, Ф) |
Подгруппа |
Номер подгруппы, если есть (может быть пустым) |
День недели |
День недели, в котором проводится пара (пн, вт, ср, чт, пт, сб) |
Номер пары |
Порядковый номер пары в учебном дне (1, 2, 3, 4, 5, 6) |
Предмет |
Название дисциплины |
Преподаватель |
ФИО преподавателя (может быть пустым) |
Кабинет |
Номер аудитории (может быть пустым) |
Формат |
Тип занятия: Лекция, Семинар, Лаб. раб., и т.п. (может быть пустым) |
Четн. Неделя |
Пара проводится в чётную (0) или нечётную (1) неделю |
Факультет |
Название факультета (например, ИНЖЕНЕРНО-ФИЗИЧЕСКИЙ) |
Чтобы загрузить расписание:
- Откройте чат с ботом.
- Отправьте Excel-файл (.xlsx) с расписанием в чат как документ (не как текст).
- Бот автоматически обработает файл и подготовит данные к дальнейшей работе.
Доступ к административным командам и загрузке расписания предоставляется по условиям, реализованным в staff_handlers.py.
MIT License.