bot-of-truth

module
v0.0.0-...-b3f87a3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 12, 2023 License: Apache-2.0

README

Бот истины для Telegram

Описание

Бот для вычитывания сообщений из телеграмма и ответа по шаблону

Установка

CI поддерживает развертывание в контейнере докера, так же возможен запуск через ./src/main.go

Настройка

Для настройки используется файл settings.json в котором имеются секция с реакциями на сообщения и секция с вебхуками от сторонних сервисов. Структура settings.json представлена ниже

{
    "events": [
        
    ],
    "hooks": [
        
     ]
}

В событиях мы указываем объекты с полями triggrs - массивом условий при выполнении которых событие сработает, responses - набором действий, которые сделает бот, если событие произошло и опциональным флагом "randomResponse": true при указании которого бот отреагирует только одним случайным ответом

{
    "triggers": [

        ],
    "responses": [
                  
        ],
    "randomResponse": true
}

В triggers мы указываем или объекты с полеми type - типом реакции regexp если надо реагировать просто на совпадение с регулярным выражением и unavoidableRegexp если надо реагировать на совпадение по регулярному выражению, которое попытаются обойти. В поле content надо указать само регулярное выражение. Так же можно указать ограничение по чату если type - chats, а в объекте есть массив идентификаторов чатов chats

{
    "type": "unavoidableRegexp",
    "content": "(опоссум|ежик)"
},
{
    "type": "chats",
    "chats": [-123, -321]
}

В реакциях-ответах мы указывае опциональное поле "target": "self" если это должен быть ответ на сообщение-тригер, type с типом ответа: sticker/text/voice и content: для стикера или голосового сообщения это его идентификатор, для текст - сам текст

{
    "target": "self",
    "type": "sticker",
    "content": "какой-то ID стикера"
}

Так же возможен ответ http запросом если type указан как httpRequest. Тогда в поле method необходимо указать http-метод, в url - адрес ресурса, а в content - тело запроса с возможностью указать части из сообщения-тригера как %2% (в данном случае второе слово из исходного сообщения).

{
    "type": "httpRequest",
    "method": "PUT",
    "url": "http://127.0.0.1:8080/instruments",
    "content": "{\"tiker\": \"%2%\",\"active\": true}"
}

В вебхуках мы указываем объекты с url - адресом для GET запроса новых сообщений и chat - с указанием id чата

{
    "chat": -123,
    "url": "http://127.0.0.1:8080/events"
}

Переменные окружения

Переменная Описание Обязательная Значение по умолчанию
BOT_TELEGRAM_BOT_TOKEN Токен бота Telegramm Да
BOT_CHECK_MESSAGE_SECONDS Задержка проверки новых сообщений Нет 5 секунд
BOT_DEBUG Режим отладки, надо установить "y" для расширенного вывода в консоль Нет Ложь

Directories

Path Synopsis
internal
bot
responses
Package responses is a generated GoMock package.
Package responses is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL