Это неофициальный бот, который можно подключить к личному или групповому чату и получать уведомления о новых семинарах НИЦ "Курчатовский Интитут". Тематики семинаров указываются в конфигурационном файле config.yaml
и по умолчанию содержат следующие названия:
- Отдел Т: Эксперименты на токамаках,
- Инженерно-физические проблемы термоядерных реакторов
- Теория магнитного удержания плазмы
- Инженерно-физический семинар по токамакам.
Для указания других семинаров можно изменить файл config.yaml
. При запуске бота в контейнере данный файл по умолчанию лежит в /app/config/config.yaml
.
Помимо автоматического получения уведомлени бот позволяет осуществлять поиск по семинарам, опубликованным на страницах соответствующих тематик. Бот поддерживает следующие команды:
/last
. Вызывает выбор списка семинаров. Может быть без аргументов, он выдаст последний семинар. Какой выберешь или все четыре. Если написать с числом/last 3
, то выдаст 3 последних семинара. Работает только в личных сообщениях./find
. Вызывает выбор списка семинаров. После выбора можно ввести поисковый запрос следующим сообщением. Поиск ведется по словам без учета регистра. Работает только в личных сообщениях./request
. Пересылает следующее сообщение в указанный чат, позволяет организовать обратную связь или отправлять обращения к кому-либо из управляющих./subscribe
. Добавляет в список для рассылки сообщений о новых семинарах в личные сообщения./unsubscribe
. Исключает из списка для рассылки сообщений о новых семинарах в личные сообщения.
Администратору доступны следующие дополнительные команды:
/info
. Показывает когда была последняя проверка новостей и количество сохраненных семинаров./update
. Заставляет бота запустить поиск новых семинаров вне очереди./setcount
. Позволяет задать номер самого свежего семинара.
Администратору и модераторам доступны следующие дополнительные команды:
/notify
. Пересылает следующее после команды сообщение в целевой чат. Позволяет осуществлять оповещение участников указанного чата.
Пример списка команд:
last - Отправляет текст последнего объявленного семинара либо последние N семинаров, если после команды указано целое число.
find - Находит все семинары в которых встречается текст введенный в сообщении, отправленном после команды.
request - Отправить запрос.
subscribe - Добавляет вас в список рассылки уведомлений о новых семинарах.
unsubscribe - Убирает ваз из списка рассылки о новых семинарах.
notify - Пересылает следующее после команды сообщение в целевой чат. Необходимо быть в списке модераторов бота.
hello - Приветственное сообщение с описанием возможностей бота.
Самого бота после этого можно запустить в среде Python, в Docker либо Kubernetes.
Для запуска бота с помощью интерпретатора python достаточно сделать следующее:
git clone https://github.com/Mr-Boshi/nrcki_seminar_bot.git
cd nrcki_seminar_bot
cp .env_example .env
pip install -r requirements.txt
После этого заполните переменные среды в файле .env
и запустите бота с помощью
python main.py
Для того, чтоб запустить бота в Docker создайте файл с названием docker-compose.yaml
и поместите в него содержимое одноименного файла из репозитория. Заполните переменные среды и выполните команду
git clone https://github.com/Mr-Boshi/nrcki_seminar_bot.git
cd nrcki_seminar_bot
После этого заполните переменные среды в файле docker-compose.yaml
и запустите контейнер с помощью
docker compose up -d
Для того, чтоб развернуть бота в Kubernetes, создайте yaml-файл и поместите в него содержимое файла kubernetes.yaml
из репозитория. В нем описаны три k8s-ресурса:
- namespace, чтобы создать пространство имен для бота, если его не существует;
- pvc для того, чтобы хранить состояние бота при перезапуске;
- deployment - сам бот.
Заполните переменные среды и выполните команду
kubectl apply -f _имя вашего файла_
На данный момент бот поддерживает следующие переменные среды:
bot_token
- токен бота к которому можно подключитьсяchat_id
- ID чата в который будут автоматически приходитьadmin_id
- ID администратора которому будут приходить сообщения об ошибках (when implemented...)
Опциональные переменные:
timer
- количество часов между проверками обновлений на сайте. 1 - ежечасно, 24 - раз в сутки. Должно быть целым. По умолчанию - 1.rate_limit
- максимальное количество сообщений в секунду, которое разрешается отправлять боту. Должно быть положительным float. Не рекомендуется ставить больше 1. По умолчанию 0.5silent_mode
- выключает приветственно сообщение бота, которое отправляется при его запуске и отправку уведомлений при проблемах со списком семинаров. Должно быть True или False, по умолчанию Falseconfig_file
- путь к файлу конфигурации. По умолчанию/app/config/config.yaml
, но можно пробросить в контейнер существующий файл на хосте.
- Run headless browser only if needed
- Error handling
- Better search
- Display seminar numbers
- Set seminar titles with config
- Database for the news
- Add requests.