SUAI-Schedule-Bot — это Telegram-бот для студентов ГУАП, который позволяет просматривать расписание занятий по выбранной группе. Бот предоставляет удобный интерфейс для просмотра расписания на сегодня, завтра или всю неделю, а также позволяет переключаться между неделями (числитель/знаменатель).
- Выбор курса и группы
- Просмотр расписания на сегодня, завтра или неделю
- Переключение между неделями (числитель/знаменатель)
- Отображение расписания звонков
- Смена выбранной группы
- Python 3.7 или выше
- PostgreSQL база данных
- Аккаунт Telegram для создания бота и получения токена
-
Клонируйте репозиторий:
git clone https://github.com/vemneyy/SUAI-Schedule-Bot.git cd SUAI-Schedule-Bot
-
Создайте виртуальное окружение и активируйте его:
python -m venv venv source venv/bin/activate # Для Linux/MacOS venv\Scripts\activate # Для Windows
-
Установите необходимые зависимости:
pip install -r requirements.txt
-
Настройте базу данных:
-
Создайте базу данных PostgreSQL.
-
Выполните скрипт
create_db.sql
, чтобы создать необходимые таблицы и структуры в базе данных:psql -U your_db_user -d your_db_name -f create_db.sql
-
Обновите файл
config.py
, указав параметры подключения к базе данных:DATABASE_CONFIG = { 'user': 'your_db_user', 'password': 'your_db_password', 'database': 'your_db_name', 'host': 'your_db_host', 'port': 'your_db_port' # Если отличается от стандартного 5432 }
-
-
Получите токен Telegram-бота:
-
Создайте нового бота через @BotFather в Telegram.
-
Получите токен и вставьте его в файл
config.py
:BOT_TOKEN = "ваш_токен_бота"
-
-
Запуск бота:
python main.py
main.py
— точка входа в приложение.config.py
— файл с конфигурацией бота и базы данных.loader.py
— инициализация бота и диспетчера.utils.py
— вспомогательные функции и декораторы.keyboards.py
— файлы с описанием клавиатур и кнопок.database.py
— функции для работы с базой данных.schedule_utils.py
— функции для генерации расписания.handlers/
— пакет с обработчиками команд и сообщений.__init__.py
— инициализация обработчиков.start.py
— обработчик команды/start
.change.py
— обработчик команды/change
и связанных callback.list_commands.py
— обработчик команды/list
.schedule.py
— обработчики команд/today
,/tommorow
,/week
и связанных функций.calls.py
— обработчик команды/calls
.course_selection.py
— обработчики выбора курса и группы.
После запуска бота пользователи могут взаимодействовать с ним через следующие команды:
/start
— начать работу с ботом, выбрать курс и группу./today
— показать расписание на сегодня./tommorow
— показать расписание на завтра./week
— показать расписание на текущую неделю./change
— изменить выбранную группу./calls
— показать расписание звонков./list
— вывести список доступных команд.
Также бот предоставляет кнопки для быстрого доступа к основным функциям после выбора группы.
- /start — Начать работу с ботом и выбрать группу.
- /today — Расписание на сегодня.
- /tommorow — Расписание на завтра.
- /week — Расписание на текущую неделю.
- /change — Сменить выбранную группу.
- /calls — Расписание звонков.
- /list — Список доступных команд.
-
Начало работы:
- Отправьте команду
/start
. - Выберите курс из предложенных вариантов.
- Выберите свою группу из списка.
- Отправьте команду
-
Просмотр расписания:
- Используйте команды
/today
,/tommorow
или/week
для просмотра расписания. - Для переключения между неделями (числитель/знаменатель) используйте кнопку переключения в расписании недели.
- Используйте команды
-
Смена группы:
- Отправьте команду
/change
. - Подтвердите намерение сменить группу.
- Повторите процесс выбора курса и группы.
- Отправьте команду
- Бот включает ограничение по количеству запросов от одного пользователя (анти-спам). Если вы отправляете слишком много запросов за короткое время, бот может игнорировать их.
- Если бот сообщает, что группа не выбрана, используйте команду
/start
или/change
для выбора группы. - В случае проблем с подключением к базе данных убедитесь, что параметры в
config.py
указаны верно и база данных доступна.
Если вы хотите внести свой вклад в развитие бота:
- Форкните репозиторий.
- Создайте новую ветку для вашей функции или исправления:
git checkout -b feature/YourFeature
. - Внесите изменения и закоммитьте их:
git commit -am 'Add some feature'
. - Запушьте ветку:
git push origin feature/YourFeature
. - Создайте Pull Request.
Этот проект находится под лицензией MIT — подробности в файле LICENSE.