Menü¶
Ihr Menü ist ein Knotenbaum unter dem obersten Schlüssel menu. Es gibt zwei
Arten von Knoten:
- Eine Kategorie öffnet ein Untermenü. Sie besitzt
items. - Eine Schaltfläche führt etwas aus. Sie besitzt eine Funktion.
Wenn diese Begriffe neu für Sie sind, lesen Sie zuerst die Grundlagen. Die vollständige Liste aller Felder finden Sie unter Konfiguration → Menü.
Ein flaches Menü¶
Das einfachste Menü ist eine Liste von Schaltflächen ohne Verschachtelung:
Ein Menü mit drei Schaltflächen erstellen
Senden Sie /start in Telegram. Ihr Menü wird angezeigt.
Gruppierung mit Kategorien¶
Wenn Ihr Menü wächst, gruppieren Sie zusammengehörige Aktionen in Kategorien.
Beim Antippen zeigt eine Kategorie ihre items. Home ist immer im Menü
vorhanden. Back erscheint nur innerhalb einer Kategorie.
Schaltflächen in Kategorien gruppieren
menu:
- name: System
type: category
icon: "💻"
items:
- name: Uptime
type: button
function: command
command: "uptime"
- name: Free memory
type: button
function: command
command: "free -h"
- name: Services
type: category
icon: "🔧"
items:
- name: Restart nginx
type: button
function: command
command: "systemctl restart nginx"
confirm: true
Kategorien können beliebig tief verschachtelt werden. Eine Kategorie muss mindestens einen Eintrag enthalten.
Namen müssen unter Geschwistern eindeutig sein¶
Zwei Knoten unter demselben übergeordneten Knoten dürfen nicht denselben Namen besitzen (Groß-/Kleinschreibung wird ignoriert). Folgendes ist zulässig, da die Knoten in verschiedenen Kategorien liegen:
Einen Namen unter verschiedenen übergeordneten Knoten wiederverwenden
menu:
- name: Web
type: category
items:
- name: Restart # zulässig
type: button
function: command
command: "systemctl restart nginx"
- name: Database
type: category
items:
- name: Restart # zulässig, anderer übergeordneter Knoten
type: button
function: command
command: "systemctl restart postgresql"
Symbole¶
icon ist ein optionales Emoji vor dem Namen. Es dient nur der Darstellung.
Diese Schaltfläche startet den Rechner neu
Wählen Sie ein einfaches, gebräuchliches Emoji
Einige Emojis führen auf manchen Smartphones dazu, dass der Schaltflächentext abgeschnitten wird oder über die Schaltfläche hinausragt. Probieren Sie in diesem Fall ein anderes Emoji aus.
Darstellung des Telegram-Menüs¶
Alle Schaltflächen erscheinen auf der Tastatur unter dem Nachrichtenfeld (der Tastatur, die sich über die kleine Schaltfläche am rechten Ende des Nachrichtenfelds ein- und ausblenden lässt). Diese Tastatur nimmt immer die volle Breite des Chats ein, sodass Schaltflächentext nicht zusammengedrückt oder abgeschnitten wird.
- Home ist auf jedem Bildschirm immer die erste Schaltfläche. Tippen Sie sie an, um zum ersten Bildschirm zurückzukehren.
- Back erscheint innerhalb einer Kategorie.
- $ >_ Run Command erscheint, wenn
enable_run_commandaktiviert ist (siehe unten). - Einträge stehen standardmäßig zu zweit in einer Zeile. Eine Kategorie kann dies mit
columnsändern. Bei vielen Einträgen ermöglichen Prev und Next die Seitennavigation. - Schaltflächen mit
confirm: truefragen vor der Ausführung mit Yes / Cancel nach.
Menütitel werden wiederverwendet, Ausgaben bleiben erhalten
Ein neuer Menütitel (Home, eine Kategorie oder eine Seite) ersetzt den vorherigen, damit sich der Chat nicht mit leeren Bildschirmen füllt. Die Zeile Running und die Befehlsausgabe bleiben im Chat, sodass Sie auch nach erneutem Öffnen des Menüs sehen können, was ausgeführt wurde.
Ergebnisse bleiben Nachrichten oder kommen als Datei
Kurze Befehlsausgaben bleiben als Codeblock im Chat. Ein längeres Ergebnis
kann als mehrere Antwortnachrichten oder als eine .txt-Datei ankommen, je
nach output. Die letzte Nachricht (oder die Datei) behält dieselben
Schaltflächen wie die Seite, auf der Sie waren, sodass Back weiterhin
die Kategorie verlässt. Siehe
Ausgabe steuern.
Bestätigung¶
Fügen Sie einer Schaltfläche confirm: true hinzu, um vor der Ausführung ein
zweites Antippen („Are you sure?“) zu verlangen. Verwenden Sie dies für
destruktive Aktionen. Siehe Bestätigung.
Diese Schaltfläche stoppt einen Dienst
Die Bestätigungsaufforderung läuft nach einer Weile ab (standardmäßig nach
5 Minuten). Ändern Sie dies mit confirm_ttl; siehe
Konfiguration → Felder auf oberster Ebene.
Schaltflächenspezifische Einstellungen¶
Einige globale Einstellungen lassen sich für eine einzelne Schaltfläche überschreiben:
Einer Schaltfläche eigene Einstellungen geben
- name: Long backup
type: button
function: command
command: "/usr/local/bin/backup.sh"
timeout: "10m" # dies kann länger als das globale Zeitlimit dauern
workdir: "/var/backups" # hier ausführen
env:
BACKUP_MODE: "full" # zusätzliche Umgebungsvariable für diesen Befehl
Die vollständige Feldliste finden Sie unter Konfiguration → Menü.
Layout steuern¶
menu_columns legt die Anzahl der Eintrags-Schaltflächen pro Zeile fest
(Standardwert 2). Eine Kategorie kann dies mit columns überschreiben. Besitzt
ein Menü mehr als page_size Einträge (Standardwert 8), wird es in Seiten
aufgeteilt. Prev/Next werden angezeigt, bis Sie das jeweilige Ende erreichen.
Siehe Konfiguration → Felder auf oberster Ebene.
Run Command¶
Wenn Sie auf der obersten Ebene Ihrer Konfiguration
enable_run_command: true festlegen, bleibt eine Schaltfläche
$ >_ Run Command im Menü (innerhalb einer Kategorie hinter Back, auf dem
ersten Bildschirm hinter Home). Tippen Sie sie an und senden Sie anschließend
den auszuführenden Shell-Befehl. Der Bot verwendet dieselbe Shell, dieselbe
Zeitüberschreitung, dasselbe Arbeitsverzeichnis und dieselben
Ausgabe-Einstellungen wie Ihre anderen Schaltflächen.
Run Command hat kein eigenes output und folgt deshalb immer der obersten
Ebene.
Home oder Back bricht die Aufforderung ab, ohne etwas auszuführen. Diese Funktion ist standardmäßig deaktiviert. Siehe Konfiguration → Felder auf oberster Ebene.
Dies gewährt Zugriff auf den gesamten Rechner
Wenn Run Command aktiviert ist, kann jeder zugelassene Benutzer jeden Befehl auf dem Host ausführen, nicht nur Ihre definierten Schaltflächen. Aktivieren Sie die Funktion nur, wenn Sie allen zugelassenen Benutzern entsprechend vertrauen.
Ein Befehl nach dem anderen¶
Ihre Befehle werden nacheinander statt gleichzeitig ausgeführt.
Ein zweites Antippen wartet, bis es an der Reihe ist
Tippen Sie eine zweite Schaltfläche an, während die erste noch arbeitet, wartet die zweite und wird danach separat ausgeführt. Ihre Zeile Running erscheint, sobald sie startet. So geraten zwei Ihrer Aktionen nicht beim Zugriff auf denselben Dienst oder dieselbe Datei in Konflikt. Andere Personen werden durch Ihren Befehl nicht aufgehalten; jede Person besitzt ihre eigene Warteschlange.
Was beim Antippen ausgeführt wird¶
Jede Schaltfläche verweist über ihr Feld function auf eine Funktion. Die
Schaltflächen in den obigen Beispielen verwenden die integrierte Funktion
command. Informationen zu integrierten und eigenen Funktionen sowie zum
Hinzufügen eigener Funktionen finden Sie unter
Funktionen.
Verwandte Seiten¶
- Schaltfläche — was eine Schaltfläche ist
- Kategorie — Knoten für Untermenüs
- Ausgabe steuern — Nachrichten oder eine
.txt-Datei - Konfiguration → Menü — alle Felder