Перейти к содержанию

Кнопка

Нажимаемый пункт в меню Telegram. Кнопка имеет name и при нажатии запускает функцию на вашем сервере и отправляет результат обратно в чат.

Кнопки и категории вместе образуют дерево меню. под ключом верхнего уровня menu в вашем файле конфигурации. Кнопка делает работу; категория открывает только подменю.

Как выглядит кнопка

Кнопки появляются на клавиатуре под окном сообщения, по две в строке по умолчанию. Имя, которое вы выбираете, представляет собой текст на ключе, поэтому сделайте его достаточно коротким, чтобы его можно было прочитать дальше. телефон. См. Меню → Как выглядит меню Telegram.

Части кнопки

Каждая строка управляет одной частью кнопки

One button, fully labelled
- name: Restart nginx # (1)!
  type: button # (2)!
  icon: "🔄" # (3)!
  function: command # (4)!
  command: "systemctl restart nginx" # (5)!
  confirm: true # (6)!
  1. Текст на ключе в Telegram. Оно должно быть уникальным среди своих соседей по то же самое меню.
  2. Всегда здесь button. Вместо этого используйте category, если вам нужно подменю.
  3. Необязательный смайлик, отображаемый перед именем. Это только украшение и изменения ничего о том, что работает.
  4. Какую функцию использовать. command — встроенный, который запускает команду оболочки.
  5. Что запускает функция command. Все, что вы можете ввести в терминале работает здесь.
  6. Необязательно. Спросите: «Вы уверены?» перед запуском. Не включайте подтверждение для действий, которые только читают данные.

Что происходит, когда вы нажимаете на него

  1. Бот публикует короткую строку Выполняется, чтобы вы знали, что оно началось.
  2. Команда запускается на машине, на которой работает бот.
  3. Вывод возвращается в виде блока кода с кодом завершения и временем выполнения. Короткий вывод остаётся в чате одним или несколькими сообщениями; более длинный вывод может прийти файлом .txt (см. Длинные результаты файлом).
  4. Вы остаетесь в том же меню, в котором находились, поэтому нажатие Назад по-прежнему оставляет его. категория.

Общие кнопки

Uptime button
- name: Uptime
  type: button
  function: command
  command: "uptime"
Restart nginx button
- name: Restart nginx
  type: button
  icon: "🔄"
  function: command
  command: "systemctl restart nginx"
Nginx log button
- name: Nginx log
  type: button
  function: command
  command: "journalctl -u nginx -n 50 --no-pager"
Nightly backup button
- name: Nightly backup
  type: button
  function: script
  path: "/usr/local/bin/backup.sh"
Stop nginx button
- name: Stop nginx
  type: button
  icon: "🛑"
  function: command
  command: "systemctl stop nginx"
  confirm: true

Значки

icon помещает перед именем смайлик. Это чисто косметически, так что вы можете изменить или удалить его в любое время, не касаясь того, что запускает кнопка.

Значок меняет только метку

The same button, with and without an icon
- name: Disk usage
  type: button
  function: command
  command: "df -h"

- name: Disk usage
  type: button
  icon: "💾"
  function: command
  command: "df -h"

Спрашивайте, прежде чем рисковать кнопками

Добавьте confirm: true, и бот сначала спросит «Да» или «Отмена». Используйте его для чего угодно который останавливает службу, удаляет данные или перезагружает компьютер. Срок действия запроса истекает через некоторое время (по умолчанию пять минут).

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

Настройки только для одной кнопки

Большинство глобальных настроек можно изменить с помощью одной кнопки, что удобно, когда одна работа ведет себя иначе, чем остальные:

Переопределить настройки для одного медленного задания

A slow job that runs somewhere else
- name: Long backup
  type: button
  function: command
  command: "/usr/local/bin/backup.sh"
  timeout: "10m"
  workdir: "/var/backups"
  env:
    BACKUP_MODE: "full"

timeout дает этой команде больше времени на выполнение, workdir выбирает каталог, в котором он работает, и env добавляет переменные среды только для него.

Длинные результаты файлом

На кнопке output не обязателен. Если его нет, кнопка берёт корневой режим (auto, если вы его не меняли): короткий результат остаётся сообщениями в чате, а результат длиннее двух сообщений приходит одним файлом .txt. Указывайте output на кнопке только если эта кнопка всегда должна слать файл или всегда оставаться текстом. max_output_messages на кнопке задать нельзя.

Задайте output: file на кнопке, которая всегда печатает много (например логи), или output: text, чтобы оставить старое поведение только для этой кнопки.

Корневые ключи output и max_output_messages описаны в разделе Конфигурация → Сколько выводимых команд вы видите. Страница Управление выводом проходит все сочетания корня и кнопки, по одному примеру на каждое.

Значения для функции

Напишите значения функции прямо на кнопке. command, path и args представляют собой поля ярлыков для параметров с такими именами. Пользовательские имена, такие как url, host, unit и lines работают одинаково.

Передача пользовательских значений

Recent Nginx logs
- name: Nginx logs
  type: button
  function: journal-unit
  unit: "nginx.service"
  lines: 100

Не помещайте эти значения в params:. Каждый ключ должен соответствовать параметру объявленный выбранной функцией. validate отчеты неизвестные имена, отсутствующие обязательные значения и недопустимые значения int или bool.

Конфигурация

Для каждого поля, которое принимает кнопка, см. Конфигурация → Меню.

Похожие

  • Категория


    Открывает подменю вместо запуска чего-либо. Категория

  • Функция


    Что на самом деле запускается при нажатии кнопки.

    Функция

  • Параметр


    Значения, необходимые функции от кнопки.

    Параметр

  • Меню


    Постройте и организуйте все дерево.

    Меню

  • Управление выводом


    Сообщения или файл .txt и как кнопка переопределяет корень.

    Управление выводом