Contrôler la sortie¶
Lorsqu’un bouton a terminé, le bot doit placer le
résultat dans votre conversation. Telegram n’accepte jamais plus de 4096 octets
dans un message : un résultat long arrive donc soit en plusieurs messages de
réponse, soit en un fichier .txt que vous pouvez ouvrir et télécharger.
Trois champs facultatifs décident de ce qui se passe. Vous pouvez tous les omettre, le bot se comporte quand même raisonnablement.
La seule règle à retenir
Le bouton gagne. Si un bouton définit output, c’est lui qui s’applique.
Si le bouton ne dit rien, la valeur racine s’applique. Si la racine ne dit
rien non plus, le bot utilise auto.
-
max_output_bytes
Quantité de sortie conservée depuis la commande avant tout envoi.
-
output
Messages ou fichier. Le seul champ que vous pouvez aussi définir sur un bouton.
-
max_output_messages
En mode
auto, nombre de messages autorisés avant l’envoi d’un fichier.
Chaque image de cette page s’agrandit
Les captures de conversation sont petites volontairement. Cliquez sur l’une d’elles pour la voir en taille réelle.
Les trois champs en un coup d’œil¶
| Champ | Où le définir | Type | Par défaut | Ce qu’il décide |
|---|---|---|---|---|
max_output_bytes |
racine uniquement | entier | 524288 |
Combien d’octets de sortie le bot conserve par commande |
output |
racine et bouton | auto | text | file |
auto |
Si le résultat arrive en messages de conversation ou en un fichier .txt |
max_output_messages |
racine uniquement | entier, 1–10 |
2 |
En mode auto, le nombre de messages autorisés avant l’envoi d’un fichier |
Les trois se placent dans votre
fichier de configuration, à la racine, à côté de
shell et timeout, et non sous telegram. La liste complète des clés racine
se trouve sur la page Configuration.
max_output_bytes¶
C’est votre propre limite, et elle s’applique en premier. Pendant qu’une
commande tourne, le bot conserve au plus ce nombre d’octets de sa sortie,
compté séparément pour la sortie normale et la sortie d’erreur. Le reste est
jeté, mais la commande continue jusqu’à la fin ou jusqu’à son timeout.
Conserver jusqu’à 2 Mo de sortie par commande
- 2 Mo au lieu des 512 Ko par défaut. Compté séparément pour la sortie normale et pour la sortie d’erreur.
Ce que vous voyez dans la conversation
L’augmenter n’aide que si un fichier est envoyé
Un message de conversation ne peut jamais transporter plus de 4096 octets :
un max_output_bytes plus grand ne vous parvient donc en entier que
lorsque le résultat arrive en fichier .txt. Associez-le à output: auto
(le mode par défaut) ou à output: file.
output¶
output choisit le mode de livraison. Il accepte trois valeurs et c’est le
seul champ de sortie que vous pouvez aussi placer sur un bouton.
Des messages texte tant que le résultat est court, un fichier .txt
sinon. C’est le mode par défaut, celui que vous gardez si vous n’écrivez
rien.
Laisser le bot choisir pour chaque résultat
- Décider pour chaque résultat au lieu d’imposer une seule livraison.
- Le point de bascule. Deux messages ou moins restent dans la conversation ; au-delà, le résultat devient un seul fichier.
Toujours des messages de conversation, quelle que soit la longueur du résultat. Le bot s’arrête après dix messages et ajoute une note indiquant que la suite a été coupée.
Toujours un seul fichier .txt, même pour un résultat d’une ligne. Le
résumé accompagne le fichier en légende.
L’omettre revient à écrire auto
Vous n’avez jamais besoin d’écrire output. Une configuration qui
fonctionnait avant l’existence de ce champ se comporte exactement comme
avant.
max_output_messages¶
Ce champ ne compte qu’en mode auto, et il n’existe qu’à la racine. C’est le
nombre de messages que le bot accepte d’envoyer avant de renoncer aux messages
et d’envoyer un seul fichier. Les valeurs permises vont de 1 à 10 ; la
valeur par défaut est 2.
Envoyer un fichier dès qu’un second message est nécessaire
- Le réglage le plus strict. Seul un résultat qui tient dans un message reste dans la conversation.
Ce que vous voyez dans la conversation
C’est un champ réservé à la racine
Un bouton ne peut pas définir max_output_messages. Placez-le à la racine
et laissez les boutons qui ont besoin d’autre chose définir output: text
ou output: file.
La racine et le bouton ensemble¶
Un bouton peut porter son propre output. Rien d’autre à propos de la sortie
ne se règle bouton par bouton. Le mode effectif est simplement :
output racine |
output du bouton |
Ce qui se passe réellement |
|---|---|---|
non défini ou auto |
non défini | auto |
non défini ou auto |
auto |
auto |
non défini ou auto |
text |
text |
non défini ou auto |
file |
file |
text |
non défini | text |
text |
auto |
auto |
text |
text |
text |
text |
file |
file |
file |
non défini | file |
file |
auto |
auto |
file |
text |
text |
file |
file |
file |
Les sections ci-dessous parcourent les douze combinaisons, avec un exemple chacune.
Quand la racine est auto¶
Cela comprend le cas où la racine ne dit rien du tout, car un output absent
signifie auto.
La racine est auto, le bouton ne dit rien¶
Le cas de tous les jours. Les résultats courts restent dans la conversation ;
un résultat qui demanderait plus de max_output_messages messages arrive en
fichier.
Un bouton simple sous une racine simple
Ce que vous voyez dans la conversation
La racine est auto, le bouton dit auto¶
Écrire auto sur le bouton ne change rien ici. Cela ne vaut la peine que si
vous voulez que ce bouton reste en auto, quoi que devienne la racine plus
tard.
Écrire le mode par défaut sur le bouton
output: auto
menu:
- name: Disk usage
type: button
function: command
command: "df -h"
output: auto # (1)!
- Même comportement qu’en l’omettant aujourd’hui, mais ce bouton le
garde même si la racine passe à
textoufileplus tard.
Ce que vous voyez dans la conversation
La racine est auto, le bouton dit text¶
Utilisez ceci pour un bouton dont vous voulez toujours lire la sortie sur place, même lorsqu’elle est un peu longue : une liste d’état que vous faites défiler plutôt que de télécharger.
Garder un bouton dans la conversation
output: auto
menu:
- name: Service status
type: button
function: command
command: "systemctl status nginx --no-pager"
output: text # (1)!
- Jamais de fichier, quoi que dise
max_output_messages.
Ce que vous voyez dans la conversation
La racine est auto, le bouton dit file¶
Le choix habituel pour les journaux et les sauvegardes : vous ne voulez presque jamais les lire dans la conversation, et un fichier est plus facile à conserver.
Toujours télécharger celui-ci
output: auto
menu:
- name: Nginx logs
type: button
function: command
command: "journalctl -u nginx -n 2000 --no-pager"
output: file # (1)!
- Le reste du menu continue de se comporter automatiquement. Seul ce bouton est fixé au fichier.
Ce que vous voyez dans la conversation
Quand la racine est output: text¶
Chaque bouton reste dans la conversation, sauf s’il dit le contraire. Choisissez ce mode si vous n’aimez pas télécharger des fichiers sur votre téléphone.
La racine est text, le bouton ne dit rien¶
Des messages de conversation partout
Ce que vous voyez dans la conversation
La racine est text, le bouton dit auto¶
Le bouton retrouve la bascule automatique : ce seul bouton peut donc envoyer un
fichier alors que le reste du menu ne le fait jamais. Le
max_output_messages de la racine décide du point de bascule.
Un bouton autorisé à envoyer un fichier quand il devient long
output: text
max_output_messages: 3 # (1)!
menu:
- name: Package list
type: button
function: command
command: "dpkg -l"
output: auto
- Seul ce bouton lit cette limite, car c’est le seul en mode
auto.
Ce que vous voyez dans la conversation
La racine est text, le bouton dit text¶
Identique à ne rien dire, mais l’intention est écrite. Utile dans une longue configuration où vous ne voulez pas qu’une modification ultérieure à la racine change ce bouton.
Fixer un bouton aux messages de conversation
Ce que vous voyez dans la conversation
La racine est text, le bouton dit file¶
Un bouton téléchargeable dans un menu tout en messages
output: text
menu:
- name: Full system report
type: button
function: command
command: "/usr/local/bin/report.sh"
output: file
timeout: "5m" # (1)!
- Un rapport peut prendre du temps : ce bouton reçoit donc un délai plus long que le délai global.
Ce que vous voyez dans la conversation
Quand la racine est output: file¶
Chaque résultat est un fichier, même d’une seule ligne. Cela convient à un bot surtout utilisé pour des rapports et des archives.
La racine est file, le bouton ne dit rien¶
Des fichiers partout
Ce que vous voyez dans la conversation
Même les résultats minuscules deviennent des téléchargements
Une réponse d’une ligne arrive en pièce jointe qu’il faut ouvrir. Si cela
vous gêne, laissez la racine sur auto et mettez output: file seulement
sur les boutons qui en ont besoin.
La racine est file, le bouton dit auto¶
Le bouton échappe à la règle du tout-fichier et se comporte de nouveau normalement.
Laisser une vérification rapide lisible
output: file
max_output_messages: 2
menu:
- name: Uptime
type: button
function: command
command: "uptime"
output: auto # (1)!
- Retour à la bascule automatique, pour ce bouton uniquement.
Ce que vous voyez dans la conversation
La racine est file, le bouton dit text¶
Forcer un bouton à revenir dans la conversation
Ce que vous voyez dans la conversation
La racine est file, le bouton dit file¶
Répéter la valeur racine. C’est sans danger et cela garde le bouton correct si vous assouplissez la racine plus tard.
Un bouton qui doit toujours être un fichier
Ce que vous voyez dans la conversation
À quoi ressemble le fichier¶
Lorsqu’un résultat est livré en fichier, vous recevez une pièce jointe et une courte légende.
- Nom — le nom du bouton en minuscules avec des tirets, puis la date et
l’heure en UTC, par exemple
nginx-logs-20260913-091204.txt. - Légende — le même résumé que celui affiché en haut d’un message de conversation : nom du bouton, code de sortie, durée, et la note de délai ou de troncature lorsqu’il y en a une.
- Corps — ce résumé de nouveau, puis une section
--- stdout ---, puis une section--- stderr ---lorsque la commande y a écrit quelque chose.
Dans le fichier téléchargé
Limites que vous ne pouvez pas changer¶
C’est Telegram qui fixe le plafond, pas le bot
- Un message de conversation contient au plus 4096 octets.
- En mode
text, le bot envoie au plus dix messages et termine par(output too long; showing first N bytes). - Quel que soit le
max_output_messagesécrit, dix messages restent le plafond absolu.
Si un envoi échoue, le bot réessaie d’abord
Lorsque le fichier ne peut pas être envoyé, faute de réseau ou parce que Telegram demande de ralentir, le bot réessaie automatiquement avec une attente croissante. Ce n’est qu’après avoir abandonné qu’il revient aux messages de conversation, pour qu’une courte coupure ne coûte pas le résultat. Voir Nouvelles tentatives d’envoi.
Exécuter une commande suit le réglage racine¶
Le bouton $ >_ Run Command ne fait pas partie de votre menu : il n’a donc
pas de output propre. Il suit toujours les output et
max_output_messages de la racine. Consultez
Menu → Exécuter une commande.
Pages associées¶
-
Configuration
Toutes les clés racine, dont les trois champs de sortie dans un tableau.
-
Bouton
Ce qu’un bouton peut remplacer, dont
output. -
Menu
Comment les résultats côtoient le menu, et ce que fait Exécuter une commande.
-
Shell
Le shell, le dossier de travail et le délai utilisés par vos commandes.
-
Nouvelles tentatives d’envoi
Ce qui se passe quand un envoi à Telegram échoue en cours de route.














