Этот проект представляет собой 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_TIMES
True
/False
Включение альтернативного расписания времени пар (настраивается в consts.py). INVERT_WEEK_PARITY
True
/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.