Skip to content

graukin/monitoring-icq-bot

Repository files navigation

monitoring-icq-bot

Bot

Бот для ICQ на основе официальной библиотеки. Умеет передавать пользователю сообщения от Airflow.

Система меток

У каждого сообщения должна быть своя метка (строка). Метки являются иерархической структурой, где уровни разделены знаком '.' (точка). Например: метка 'a.b.c' состоит из 3 уровней ('a', 'b' и 'c').

Пользователь подписывается на набор меток и бот присылает ему только сообщения с этими метками или дочерние (так, если пользователь подписан на метку 'a.b', то ему будут приходить сообщения с метками 'a.b', 'a.b.c' и 'a.b.d.e', но не с меткой 'a', т.к. она "старше").

Команды

/list - выводит список меток, на которые подписан данный пользователь.

/add - запускает режим добавления подписки на метку. Следующим запросом бот попросит указать, какую метку добавить, после чего скажет, удалось ли ему это сделать.

/rm - запускает режим удаления подписки на метку. Далее по аналогии с /add - спросит, что удалить и скажет, что получилось.

MessageOperator

message_operator.py

Пример реализации оператора для Airflow, который будет передавать сообщения боту.

Использование:

MessageOperator(task_id="msg1",
                dag=main_dag,
                label="dump",
                message="Just a test message.\nwith a new line",
                queue="any_queue")

label - метка, по которой будет рассылаться сообщение, message - само сообщение.

Оператор может запускаться только на воркере master (по умолчанию считаем, что он запущен на той же физической машине, что и сам бот). В случае, если оператору будет передан аргумент queue с каким-то другим значением, внутри оператора он будет переписан обратно на master.

Логи оператора:

[2018-11-23 17:43:11,586] {base_task_runner.py:98} INFO - Subtask: [2018-11-23 17:43:11,586] {test.py:42} INFO - Wrong queue - only "master" is allowed. Replace it.
[2018-11-23 17:43:11,711] {base_task_runner.py:98} INFO - Subtask: [2018-11-23 17:43:11,711] {test.py:50} INFO - Message sent. Returned value was: 0

Releases

No releases published

Packages

No packages published

Languages