Telegram бот "Расписание НКРП"
Телеграм бот расписания для Новороссийского колледжа радиоэлектронного приборостроения.
Руководство по администрированию
Системные требования
Бот может работать в системах Windows и Linux. Для работы требуется установить
на компьютер Python версии 3.8 и выше (рекомендуется 3.10). В примерах команд
подразумевается, что python прописан в переменной окружения PATH и доступен по
команде python
. Если это не так во всех командах Вы должны указывать полный
путь к исполняемому файлу python(.exe).
Установка
Скачайте архив с кодом программы и распакуйте его в удобную папку. У пользовтеля, от имени которого будет запускаться бот должны быть права на запись в эту папку.
Скопируйте файл config.example.json
в config.json
.
Откройте констоль в папке с программой и выполните команду:
python -m pip install -r requirements.txt
В Windows в зависимости от метода установки может потребоваться выполнить эту команду от имени администратора.
В Linux зависимости будут установлены в папку текущего пользователя. Если планируется запускать бота от имени другого пользователя, то эта команда также должна быть выполнена от имени этого пользователя. Если выполнить эту команду от имени root, то зависимости будут установлены в системный каталог и станут доступны всем пользователям.
Настройка
Настройки бота указываются в файле config.json
. Для редактирования этого
файла рекомендуется использовать редактор с подсветкой синтаксиса, например,
VS Code.
В таблице перечислены все опции конфигурации.
Ключ | Тип | По умолчанию | Описание |
---|---|---|---|
JWT_KEY_FOR_ERRORS | строка | "" |
Ключ (случайные символы), необходимый для подтверждения отладочной информации. Только если debug_info включен. |
INVITE_SIGN_KEY | строка | "" |
Ключ (случайные символы), необходимый для работы приглашений. Напишите что-нибудь. |
BOT_TOKEN | строка | требуется указать | Ключ (токен) telegram, выданный ботом Bot Father. |
UPDATE_INTERVAL | целое число | 3600 | Интервал обновления расписания в секундах (3600 - 1 час). |
TIMETABLE_URL | строка | "http://novkrp.ru/raspisanie.htm" |
Ссылка на страницу расписания. |
enable_features | словарь | {...: false} |
Включенные доп. возможности (см таблицу ниже). |
replace_pair_names | словарь (строка: строка) | {} |
Замена названий пар. Формат: "Название в расписании": "Название в боте" . |
cabinets | список целых чисел | [] |
Список всех возможных номеров аудиторий (для предзагрузки). |
teachers | список (см описание) | [] |
Список всех возможных преподавателей (для предзагрузки). Формат элемента: ["Фамилия", "Имя", "Отчество"] . |
groups | список строк | [] |
Список всех возможных групп (для предзагрузки). |
В таблице перечислены все дополниельные возможности, которые могут быть включены.
Ключ | Значение | Поведение |
---|---|---|
debug_info | false | При ошибке пользователю будет выведено сообщение с текстом ошибки. |
debug_info | true | При ошибке пользователю будет выведено сообщение с текстом ошибки, номером ошибки и кодом, содержащим дополнительную информацию. |
remove_old_data | false | При обновлении расписания устаревшие данные (расписание на прошедшие дни) не будут удаляться. |
remove_old_data | true | При обновлении расписания устаревшие данные (расписание на прошедшие дни) будут удаляться. |
create_missing_persist | false | При обновлении расписания несуществующие предзагружаемые данные (группы, аудитории и преподаватели) не создаются в базе данных. Группы пропускаются, остальные данные переносятся в название пары. |
create_missing_persist | true | При обновлении расписания несуществующие предзагружаемые данные (группы, аудитории и преподаватели) создаются в базе данных. |
cvp_parse | false | При обновлении расписания расписание питания в столовой не будет обрабатываться (сильно сокращает время обновления). |
cvp_parse | true | При обновлении расписания расписание питания в столовой будет обрабатываться и загружаться в базу данных если на него есть ссылка в расписании. |
Точное указание предзагружаемых данных и отключение create_missing_persist
улучшит результаты разбора.
Запуск
Для запуска бота используйте команду:
python -m raspisanie_bot
Для остановки нажмите Ctrl-C в окне консоли бота
После превого запуска бота выполните команду /start
в telegram. Это сделает Вас администратором бота.
Для сброса всех настроек пользователей, приглашений и т. д. остановите бота и удалите файлы database.sqlite*
.
Администрирование
Первым администратором является первый пользователь бота. Администратор может:
- Создавать приглашения, дающие права администратора.
- Выполнять команды
/admin ...
Админитративные команды:
/admin update
- обновление расписания с сайта.- ... - в разработке.
Автозапуск
Не рекомендуется использовать автозапуск по входу в систему (папка "Автозагрузка", .bashrc, и т.д.).
В Windows
Создайте службу. Для этого можно использовать утилиту nssm (см документацию).
В Linux
Создайте сервис systemd (если есть) или init-скрипт.
Лицензия
MIT License. См файл LICENSE.