Бот для ВК показывающий расписание занятий. Вы можете протестировать его работу, перейдя по ссылке: VkScheduleBot
Docker Hub: paladin705/vk_schedule_bot
Бот использует VK Callback API. Он должен обрабатывать следующие типы событий: Входящие сообщения и Запрет на получение. Адрес: http://<адрес сервера><FLASK_ROUTE_PATH>
. Можно изменить с помощью параметра FLASK_ROUTE_PATH
в конфигурационном файле.
Бот реализованный в docker контейнере не имеет прямого доступа к сети и использует сокет /bot/socket/bot.sock
для обработки запросов. Чтобы передать поступающие запросы боту, можно использовать nginx reverse proxy для передачи их на сокет бота.
Бот использует СУБД PostgreSQL для хранения данных.
Для включения дополнительных функций необходимо установить следующие модули:
- Модуль для автоматической отправки расписания: autoposting
- Модуль для работы с базой данных бота (добавление/изменение/удаление групп и файлов расписания): api_server
- Панель управления базой данных бота: VkScheduleBot Control Panel. Предоставляет веб-интерфейс для взаимодействия с БД расписания, а также позволяет редактировать пользователей API бота (модуль api_server)
Для запуска docker контейнера загружаемого с Docker Hub можно использовать следующую команду:
docker run \
-v ./vk_bot/socket:/bot/socket \
-v ./vk_bot/log:/bot/log \
-e DB_NAME=<Введите значение параметра> \
-e DB_USER=Введите значение параметра<> \
-e DB_PASSWORD=<Введите значение параметра> \
-e DB_HOST=<Введите значение параметра> \
-e DB_USER_TAG=<Введите значение параметра> \
-e FLASK_ROUTE_PATH=<Введите значение параметра> \
-e VK_CONFIRMATION_TOKEN=<Введите значение параметра> \
-e VK_API_TOKEN=<Введите значение параметра> \
-e STATISTIC_TOKEN=<Введите значение параметра> \
-e WEEK_TYPE=<Введите значение параметра> \
-e ADMIN_VK_ID=<Введите значение параметра> \
-e VK_ID_BLACKLIST=<Введите значение параметра> \
-e TZ=<Введите значение параметра> \
paladin705/vk_schedule_bot:latest
/bot/socket
- В данной директории находится сокет бота:bot.sock
. Он используется для обработки запросов к боту/bot/log
- Директория где располагаются логи бота
DB_NAME
- Название базы данных (БД) PostgreSQLDB_USER
- Имя пользователя БДDB_PASSWORD
- Пароль пользователя БДDB_HOST
- Адрес БДDB_USER_TAG
- Идентификатор пользователей бота (используется для разделения пользователей, при общей базе данных для нескольких ботовFLASK_ROUTE_PATH
- Опредлеляет адрес сервера бота для VK Callback APIVK_CONFIRMATION_TOKEN
- Токен для подтверждения адреса сервера. Параметр VK Callback APIVK_API_TOKEN
- Ключ доступа к сообщениям сообщества. Параметр VK APISTATISTIC_TOKEN
- Токен для отправки статистики на chatbase.com. Необязательный параметр (На данный момент не используется - Chatbase прекращает работу 27 сентября 2021 года)WEEK_TYPE
- Тип первой недели семестра 0 - числитель, 1 - знаменательADMIN_VK_ID
- VK ID страницы администратора (только номер) для отправки информации о состоянии сервераVK_ID_BLACKLIST
- Чёрный список VK ID через запятую (Пример: 1,2,3,4,5). Бот не будет отвечать на сообщения из этого списка. Необязательный параметрTZ
- Часовой пояс. Необязательный параметр. По умолчаниюEurope/Moscow
Бот принимает текстовые команды, а также команды отправленные с помощью кнопок клавиатуры для ботов.
Далее описаны лишь основные типы команд. Все файлы команд бота расположены в дирректории vk_bot/app/commands.
Команды доступны как при обычном текстовом вводе, так и с помощью кнопок (кроме команд расписание
, неделя
, вчера
, послезавтра
- они доступны только при текстовом вводе).
Список команд:
расписание
,неделя
- Выводит расписание занятий в общем виде (для числителя и знаменателя) на всю неделювчера
,сегодня
,завтра
,послезавтра
- Выводит расписание на указанный день с учётом типа недели (числитель/знаменатель)понедельник
,вторник
,среда
,четверг
,пятница
,суббота
,воскресенье
- Выводит расписание на указанный день в общем виде (для числителя и знаменателя)
Для показа расписания экзаменов служит команда экзамены
и её вариации: экзамен
, /exams
и exams
. Также на клавиатуре за месяц перед каждой сессией появляется кнопка для показа расписания экзаменов.
Для включения этой опции, должен быть установлен скрипт autoposting.
Команда ap <ЧЧ:ММ> <сегодня/завтра>
предназначена для включения автоматической рассылки расписания в назначенное время. Команда имеет обязательный парметр, время отправки <ЧЧ:ММ>
и необязательный параметр <сегодня/завтра>
который определяет на какой день будет идти отправка расписания: сегодня/завтра (если не указать параметр, то отправка будет вестись на <сегодня>
.
Команда ap off
позволяет отключить автоматическую рассылку расписания.
Отключение автоматической рассылки расписания также происходит, если пользователь установил запрет на получение сообщений.
Пользователь может зарегистрироваться с помощью клавиатуры бота, на каждом шаге регистрации выбирая университет, а затем курс и группу. Также доступна регистрация в текстовом режиме, с помощью команды reg <группа где пользователь хочет зарегистрироваться>
. Чем точнее пользователь напишет название группы (<группа где пользователь хочет зарегистрироваться>
) тем больше вероятность регистрации в нужной группе. Если группа распознана не точно, то также выводится список групп названия которых больше всего совпадают с запросом (5 наиболее совпадающих групп в порядке уменьшения совпадения с запросом).