Telegram bot

Введение

Этот шаблон используется для Telegram Bot.

Это двух-уровневый шаблон. Сначала используются теги <% ... %> для нахождения нужной секции шаблона, соответствующей команды. После нахождения нужной секции шаблонизатор будет использовать теги вида: {{ ... }}.

Для сопоставления команды пользователя/бота используется внутренняя переменная cmd. Так, при наборе команды /balance будет найдена секция: <% CASE '/balance' %>.

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

В каждой секции мы можем писать реальные команды Telegram. Например, команда sendMessage отправляет сообщение в Telegram. Вы можете использовать эту команду в соответсвии с документацией Telegram.

В каждой секции можно писать множество команд, через запятую (см. пример в секции /balance).

Для того, чтобы лучше понять, как строятся всевозможные кнопочки, читайте документацию Telegram. В этом шаблоне всего-лишь описаны вызовы этих методов.

Пример шаблона:

<% SWITCH cmd %>
<% CASE 'USER_NOT_FOUND' %>
{
    "sendMessage": {
        "text": "Для работы с Telegram ботом укажите Telegram логин в профиле личного кабинета"
    }
}
<% CASE ['/start', '/menu'] %>
{
    "sendMessage": {
        "text": "Я Ваш тестовый Telegram Bot",
        "reply_markup": {
            "inline_keyboard": [
                [
                    {
                        "text": "Баланс",
                        "callback_data": "/balance"
                    }
                ]
            ]
        }
    }
}
<% CASE '/balance' %>
{
    "deleteMessage": { "message_id": {{ message.message_id }} }
},
{
    "sendMessage": {
        "text": "Баланс: {{ user.balance }}",
        "reply_markup": {
            "inline_keyboard": [
                [
                    {
                        "text": "Назад",
                        "callback_data": "/menu"
                    }
                ]
            ]
        }
    }
}

Стандартные методы

chat_id - заполняется автоматически

Встроенные переменные SHM

  • cmd - Команда от бота или пользователя
  • message - сообщение от Telegram
  • args - массив аргументов, переданный в callback_data. Разделитель - пробел.

Встроенные методы SHM

  • shmRegister - метод позволяет зарегистрировать нового клиента

    "shmRegister": {
        "callback_data": "/menu",
        "error": "ОШИБКА: Логин {{ message.chat.username }} или chat_id {{ message.chat.id }} уже существует"
    }
    
  • shmServiceOrder - метод для регистрации новых услуг. Пример использования:

    "shmServiceOrder": {
        "service_id": "{{ args.0 }}",
        "callback_data": "/menu",
        "error": "ОШИБКА"
     }
    

    где: service_id - ID услуги

  • shmServiceDelete - метод для удаления услуг пользователя. Пример использования:

    "shmServiceDelete": {
        "usi": "{{ args.0 }}",
        "callback_data": "/menu",
        "error": "ОШИБКА"
     }
    

    где: usi - ID услуги пользователя

  • uploadDocumentFromStorage - метод загружает данные из Storage и отправляет их в виде файла

    "uploadDocumentFromStorage": {
        "name": "vpn{{ args.0 }}",
        "filename": "vpn{{ args.0 }}.conf"
    }
    
  • uploadPhotoFromStorage - метод загружает данные из Storage и отправляет их в виде картинки (QR code)

    "uploadPhotoFromStorage": {
        "name": "vpn{{ args.0 }}",
        "format": "qr_code_png"
    }
    
Изменено 05.03.2023: dnk: add telegram docs (bc302a1)