Телеграм-бот на wb-rules

изображение

Написал на досуге модуль для wb-rules, который прикидывается Телеграм-ботом:

  • понимает, кто ему пишет, поэтому может общаться сразу с несколькими пользователями в личке или в общем чате;
  • выполняет любые команды, логику вы прописываете сами;
  • ведёт очередь команд — это полезно, если бот не мог связаться с сервером, а команды продолжали поступать;
  • понимает несколько команд в одном сообщении и их аргументы;
  • может отправлять форматированные сообщения, документы и фото.

В боте нет логики обработки команд — это ваша задача: он просто публикует в топик Cmd виртуального устройства JSON-сообщение с командой из очереди, вы её обрабатываете и кладёте ответ в топик Msg.

Бот сделан модулем, поэтому вы можете запустить сколько угодно экземпляров одновременно и назвать каждый по своему.

Подробное описание и пощупать на Гитхабе, там же есть рабочий пример со скриншота. Писалось для себя, отвечать ни за что не хочу, поддержки нет, доработки приветствуются.

update 25052022 (v.2.3.1)

  • Добавил автоматическое восстановление соединения с сервером при пропадании связи с интернет.
  • Теперь можно отправлять необработанные сообщения — полезно, если нужно отправить что-то большее, чем текст или документ.
  • Добавил отправку клавиатур и приём данных от Inline Keyboard в топик Callback.
  • Теперь все сообщения из приватного чата будут считаться командами — это позволит реализовать интересные сценарии: ввод чисел, текстовые ответы на вопросы и т.д.
8 лайков

Очень здорово! Спасибо!

Супер, все работает, только загрузка процессора ~+30%, есть идеи как уменьшить?
Увеличение таймингов поможет (pollInterval и mqttInterval)?

HW Revision: 6.7.2
Release name: wb-2204

Да, увеличение времени опроса снизит нагрузку на процессор. Однако, очень странно, что она такая высокая — у меня работает несколько скриптов и бот, нагрузка около 7–9 % (wb 6.7.2 512Mb, testing)

Такая нагрузка без скрипта Telegram bot:

И такая с работающим скриптом Telegram bot:

Если вы меняли код примера, ищите, что из изменений влияет на нагрузку, например, циклы и парсинг строк.

Если это дефолтный пример, то у меня не воспроизводится и даже не могу предположить, где проблема. Если найдёте — сообщите, я поправлю в репозитории.

Логику работы не трогал, добавил новых команд и обработку при поступлении запроса от Telegram бота.

Схожее поведении нагрузки при использовании скрипта отображения загрузки CPU, RAM, Disk.

Ну вот это я и имел ввиду, попробуйте оптимизировать выполнение новых команд, если дело в них. Ну и увеличение времени опроса должно положительно сказаться.

Еще бы добавить многоуровневое меню с пиктограмами.

Я пару недель назад добавлял клавиатуры, там можно делать многоуровневые: в Callback обрабатывается сообщение от кнопки и перерисовываете клавиатуру в сообщении (через rawMsg и метод редактирования). С пиктограммами не пробовал, но там разве не обычные эмодзи в тексте?

Добрый день!
Подскажите куда копать: После суток работы скрипт перестает работать. После перезапуска wb-rules все работать начинает.?

Включить debug, смотреть логи wb-rules.

Эта тема была автоматически закрыта спустя 2 дня. В ней больше нельзя отвечать.