Ich habe eine Lösung gefunden! Der offizielle Client erlaubt es wahrscheinlich nicht, aber für Linux und Mac (und wahrscheinlich auch für Linux-Subsysteme unter Windows) gibt es eine inoffizielle Befehlszeilenschnittstelle für Telegram mit dem Namen "tg": https://github.com/vysheng/tg
Es erwähnt nicht in seiner Beschreibung, dass es auch Dateien senden kann, aber in einer Github-Ausgabe hat jemand geschrieben, dass es die send_file
Funktion gibt. Im Allgemeinen ist es nicht so gut dokumentiert, aber das Aufrufen mit --help
und das Eingeben help
in das Programm gibt viele Informationen. Der Rest kann durch Fummeln mit den Parametern und Ausprobieren verschiedener Dinge herausgefunden werden.
Dies ist die Lösung, auf die ich so gekommen bin:
Vorbereitung
- Installieren Sie tg wie in der Readme-Datei angegeben. Bei Debian hat es wegen eines Fehlers nicht sofort funktioniert, aber wie in diesem Bugreedekommentar erwähnt, ist die Installation
libssl1.0-dev
eine Problemumgehung für diesen Fehler: Ausführensudo apt install libssl1.0-dev
zwischen./configure
undmake
. - Melden Sie sich mit Ihrem Telegramm-Konto an:
bin/telegram-cli
Um das interaktive Programm zu starten, geben Sie die Telefonnummer ein und geben Sie den Anmeldecode ein. Ich habe meine Telefonnummer eingegeben+49
und das hat funktioniert, vielleicht ist es erforderlich, ich weiß es nicht. - Verwenden Sie nun einen anderen Telegramm-Client, um eine Nachricht im Ziel-Chat zu senden (oder alternativ eine Nachricht dort zu empfangen). Dadurch wird der Chat-Name der internen Chat-Liste des Programms hinzugefügt. Wenn mehrere Chats mit demselben Namen vorhanden sind, wird anscheinend der zuletzt hinzugefügte Chat ausgewählt. Ich habe keinen Weg gefunden, einen Chat per ID mitzuteilen.
Das wars für das Setup, beendetquit
das Programm.
Dateien programmgesteuert hochladen
Jetzt können Dateien hochgeladen werden, indem Sie send_file
dem Programm einen Befehl mit geben --execute
, der diesen Befehl ausführt und dann automatisch beendet:
/path/to/tg/bin/telegram-cli --exec 'send_file <chat> <filename>'
<chat>
ist der Name des Chats.
<filename>
ist der Pfad zur Datei.
/path/to/tg
sollte offensichtlich sein.
Verwendungsbeispiel
Ich verwende so etwas, um ein Backup meines Google Drive-Ordners in ein Telegramm hochzuladen, nachdem ich es mit p7zip erstellt habe:
for filename in ~/drive_backup/drive.zip.*; do ~/tg/bin/telegram-cli --exec 'send_file Backup_chat '"$filename"; done
Dadurch werden alle Dateien, deren Namen mit " drive.zip.
" (.001, .002 usw.) beginnen, in ~/drive_backup
den Telegrammchat "Backup_chat" hochgeladen.