پرش به محتویات

دکمه

گزینه‌ای قابل لمس در منوی تلگرام. دکمه یک name دارد و با لمس شدن، تابعی را روی سرور اجرا می‌کند و نتیجه را به گفتگو می‌فرستد.

دکمه‌ها و دسته‌ها با هم درخت منو را زیر کلید سطح بالای menu در فایل پیکربندی می‌سازند. دکمه کار را انجام می‌دهد؛ دسته فقط یک زیرمنو باز می‌کند.

ظاهر دکمه

دکمه‌ها روی صفحه‌کلید زیر کادر پیام ظاهر می‌شوند؛ به‌طور پیش‌فرض دو دکمه در هر ردیف. نامی که انتخاب می‌کنید متن روی کلید است، پس آن را برای خواندن روی گوشی به‌اندازهٔ کافی کوتاه نگه دارید. منو ← ظاهر منوی تلگرام را ببینید.

اجزای دکمه

هر خط یک بخش از دکمه را کنترل می‌کند

یک دکمه با همهٔ برچسب‌ها
- name: Restart nginx # (1)!
  type: button # (2)!
  icon: "🔄" # (3)!
  function: command # (4)!
  command: "systemctl restart nginx" # (5)!
  confirm: true # (6)!
  1. متن روی کلید در تلگرام. باید میان گزینه‌های هم‌سطح خود در همان منو یکتا باشد.
  2. اینجا همیشه button است. برای زیرمنو از category استفاده کنید.
  3. ایموجی اختیاری پیش از نام. فقط تزئینی است و چیزی را در اجرا تغییر نمی‌دهد.
  4. تابع مورد استفاده. command تابع توکاری است که فرمان شِل اجرا می‌کند.
  5. چیزی که تابع command اجرا می‌کند. هرچه بتوانید در ترمینال بنویسید، اینجا کار می‌کند.
  6. اختیاری. پیش از اجرا می‌پرسد «مطمئن هستید؟». برای کارهایی که فقط اطلاعات می‌خوانند آن را حذف کنید.

با لمس دکمه چه رخ می‌دهد

  1. ربات خط کوتاه Running را می‌فرستد تا بدانید کار شروع شده است.
  2. فرمان روی دستگاهی اجرا می‌شود که ربات در آن در حال اجراست.
  3. خروجی به‌شکل بلوک کد، همراه کد خروج و مدت اجرا برمی‌گردد. خروجی کوتاه در یک یا چند پیام در گفتگو می‌ماند؛ خروجی بلندتر می‌تواند به‌صورت فایل .txt بیاید (نتیجهٔ بلند به‌صورت فایل را ببینید).
  4. در همان منو می‌مانید؛ بنابراین Back همچنان شما را از آن دسته بیرون می‌برد.

دکمه‌های رایج

دکمهٔ Uptime
- name: Uptime
  type: button
  function: command
  command: "uptime"
دکمهٔ راه‌اندازی مجدد nginx
- name: Restart nginx
  type: button
  icon: "🔄"
  function: command
  command: "systemctl restart nginx"
دکمهٔ گزارش Nginx
- name: Nginx log
  type: button
  function: command
  command: "journalctl -u nginx -n 50 --no-pager"
دکمهٔ پشتیبان‌گیری شبانه
- name: Nightly backup
  type: button
  function: script
  path: "/usr/local/bin/backup.sh"
دکمهٔ توقف nginx
- name: Stop nginx
  type: button
  icon: "🛑"
  function: command
  command: "systemctl stop nginx"
  confirm: true

آیکون‌ها

icon یک ایموجی پیش از نام می‌گذارد. کاملاً ظاهری است؛ پس هر زمان می‌توانید آن را بدون دست زدن به کاری که دکمه اجرا می‌کند تغییر دهید یا حذف کنید.

آیکون فقط برچسب را تغییر می‌دهد

یک دکمه با آیکون و بدون آن
- name: Disk usage
  type: button
  function: command
  command: "df -h"

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

پرسش پیش از دکمه‌های پرخطر

confirm: true را بیفزایید تا ربات ابتدا Yes یا Cancel بپرسد. برای هر کاری که سرویسی را متوقف، داده‌ای را حذف یا دستگاه را راه‌اندازی مجدد می‌کند از آن استفاده کنید. پیام پس از مدتی منقضی می‌شود (پیش‌فرض پنج دقیقه).

برای موارد مناسب و تغییر زمان انتظار، تأیید را بخوانید.

تنظیمات تنها برای یک دکمه

بیشتر تنظیمات سراسری را می‌توان روی یک دکمه بازنویسی کرد؛ وقتی یک کار با بقیه متفاوت است، این قابلیت مفید خواهد بود:

بازنویسی تنظیمات یک کار کند

کاری کند که جای دیگری اجرا می‌شود
- 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 نیز به همین شکل کار می‌کنند.

فرستادن مقادیر سفارشی

گزارش‌های اخیر Nginx
- name: Nginx logs
  type: button
  function: journal-unit
  unit: "nginx.service"
  lines: 100

این مقادیر را درون params: نگذارید. هر کلید باید با پارامتری که تابع انتخاب‌شده تعریف کرده مطابقت داشته باشد. validate نام‌های ناشناخته، مقادیر الزامی گم‌شده و مقادیر نامعتبر int یا bool را گزارش می‌کند.

پیکربندی

برای همهٔ فیلدهایی که دکمه می‌پذیرد، پیکربندی ← منو را ببینید.

مرتبط

  • دسته


    به‌جای اجرای کاری، زیرمنو باز می‌کند.

    دسته

  • تابع


    چیزی که با لمس دکمه واقعاً اجرا می‌شود.

    تابع

  • پارامتر


    مقادیری که تابع از دکمه نیاز دارد.

    پارامتر

  • منو


    ساخت و سازمان‌دهی کل درخت.

    منو

  • کنترل خروجی


    پیام در برابر فایل .txt و اینکه دکمه چگونه ریشه را بازنویسی می‌کند.

    کنترل خروجی