Software

Einführung in Telegram-Bots: Nachrichten und Dateien aus dem Terminal senden

Für Telegram gibt es sogenannte Bots – letztlich sind das einfach Nutzer-Accounts für Programme/Roboter statt Menschen. Diese Konten lassen sich dann per API/Schnittstelle ansprechen und ganz „normal“ in Telegram nutzen.

Ihr könnt also beispielsweise Umfragen für Terminvereinbarungen in eine Telegram-Gruppe einbauen, eigene Clients schustern, von der Kommandozeile aus Dateien, Fotos oder Text senden, Nachrichten als Telegram-Messages anzeigen und so weiter. Das Schicke daran: Den Bot erstellt Ihr ganz simpel über das Telegram-Standard-Konto Botfather im Dialog. Wir zeigen Euch Schritt für Schritt, wie Ihr einen Bot erstellt und von der Kommandozeile aus Texte und Dateien sendet. Vorwissen wird nicht benötigt.

[UPDATE] Im zweiten Teile zeigen wir Euch, wie Ihr Nachrichten im Terminal empfangen könnt.

[UPDATE 2] Da der Artikel schon was älter ist: Stand September 2017 funktioniert das Vorgehen für Telegram-Bots immer noch. Wenn irgendetwas nicht funktioniert, kontrolliert die Anführungszeichen!

Natürlich gibt es auch fertige Telegram-Bots, für Hundebilder und sowas, hier geht es aber darum, eigene Bots zu erstellen:

1. Botfather integrieren

Fügt zunächst den „Nutzer“ @botfather hinzu – über die Suchfunktion oder den Link auf der Homepage.

telegra-bots
Zunächst fügt Ihr den @Botfather hinzu – ein Angebot, dass Ihr nicht …

2. Telegram-Bot erstellen

Um Euren Bot zu erstellen, sendet dem neuen Nutzer Botfather einfach die Nachrichten

/newbot

und vergebt anschließend auf Nachfrage Nutzer- und Bot-Namen – letztere müssen auf bot enden. Zum Abschluss bekommt Ihr den sogenannten Token, eine längere Zeichenkette, die Euren Bot eindeutig identifiziert. Am besten kopiert Ihr Euch den Token-Code direkt. Optional könnt Ihr noch eine About-Seite, ein Nutzerbild für den Bot etc. einrichten – sendet einfach im Telegram-Client Befehle wie /setuserpic, /help und so weiter. Nicht vergessen: Ihr müsst den Bot jetzt starten und eine erste Nachricht versenden, sonst funktioniert der nächste Schritt nicht.

telegram-bot
Sehr cool: Bots erstellt Ihr im Dialog mit @botfather

3. ID des Chats herausfinden

Um eine Nachricht an einen Telegram-Chat oder eine Telegram-Gruppe zu senden, benögtigt Ihr die entsprechende Chat-ID, die Ihr über folgendes Kommando bekommt:

curl -X POST https://api.telegram.org/bot123456:abcde1234ABCDE/getUpdates

Zunächst: 123456:abcde1234ABCDE müsst Ihr natürlich durch Euren Token-Code ersetzen – das vorangestellte „bot“ muss aber bleiben. Das Linux-Standard-Werkzeug curl dient lediglich dazu, eine HTTP-Anfrage an Telegram abzusetzen. Unter Windows müsst Ihr zunächst curl für Windows installieren. Übrigens: cURL steht für „see url“, aber egal. Das Ergebnis dieser Anfrage ist etwas in der Art:

{"ok":true,"result":[{"update_id":638422092,
"message":{"message_id":9,"from":{"id":268963852,"first_name":"Gizlog"},"chat":{"id":268963852,"first_name":"Gizlog"},"date":1437389925,"text":"c"}},{"update_id":638422093, 

Wichtig ist hier die ID des Chats, in diesem Beispiel also 268963852. Anmerkung: Natürlich könnt Ihr Euren neuen Bot wie jeden anderen Account einer Gruppe hinzufügen – dann taucht beim obigen Ergebnis auch die ID des Gruppen-Chats auf, den Ihr nutzen könnt, um in die Gruppe zu posten. Falls keine Chats erscheinen: Postet eine Nachricht in den gewünschten Chat – ohne Nachrichten gibt es natürlich auch keine Updates!

telegra-bots
Die ID des Chats müsst Ihr auslesen.

4. Nachrichten und Dateien an Telegram senden

Auch zum Senden von Nachrichten nutzen wir wieder curl:

curl -X  POST 'https://api.telegram.org/bot123456:abcde1234ABCDE/sendMessage?chat_id=-4194264&text="texty text"'

Ihr seht schon, es ist wieder dasselbe Konstrukt wie oben, aber mit der Methode/dem Befehl „sendMessage“ und daran angefügt, abgetrennt per ?, zunüchst die Chat-ID und dann mit & abgetrennt der zu sendende Text. Und schon landet die Nachricht „texty text“ in Eurem Telegram-Account, abgesandt von „Nutzer“ TutoBot in unserem Beispiel. Das Senden von Dateien und Fotos ist dann selbsterklärend:

curl -X  POST "https://api.telegram.org/bot123456:abcde1234ABCDE/sendDocument" -F chat_id=-419426123 -F document="@/home/mirco/misto.txt"

Die Methode heißt nun sendDocument – allerdings muss die HTTP-Anfrage im Format „multipart/form-data“ gesendet werden, weshalb Chat-ID und Dokumentenpfad separad via F-Parameter an den curl-Befehl angehängt werden. In diesem Beispiel wird die Datei misto.txt an unseren Tutonaut-eigenen Gruppen-Chat gesendet (der Strich gehört zur Gruppen-Chat-ID!). Denkt an das @ vor dem Dokumentenpfad. Der Foto-Befehl ist komplett analog:

curl -X  POST "https://api.telegram.org/bot123456:abcde1234ABCDE/sendPhoto" -F chat_id=-4194264 -F photo="@/home/mirco/rathaus.jpg"
Messaging aus der Bash - viel einfacher kann API-Nutzung kaum sein.
Messaging aus der Bash – viel einfacher kann API-Nutzung kaum sein.

Telegram-Bots produktiv nutzen

Bis hierher ist das ganze freilich nur Spielerei – wie geht’s weiter? Zum einen könntet Ihr Telegram natürlich auch über Programmiersprachen ansprechen und ganze Programmlogiken darum herum stricken. Aber schon auf der Kommandozeile geht noch einiges: Statt eines fixen Texts könnt Ihr natürlich auch eine Variable einsetzen, also statt „texty text“ etwa „$text“ – und diese Variable ließe sich über Skript oder Nutzeranfragen ganz einfach besetzen. Ein Super-Simpel-Beispiel wäre ein Mini-Skript wie:

echo "Gib die Nachricht ein:" &&
read text &&
curl -X  POST "https://api.telegram.org/bot123456:abcde1234ABCDE/sendMessage?chat_id=-4194264&text=$text"

Wenn Ihr das etwa als Alias oder Skript abspeichert und dann aufruft, wird zunächst „Gib die Nachricht ein“ ausgegeben, dann gebt Ihr eben die Nachricht ein und per Return wird der eingegebene Text an Telegram gesendet. Soweit einfach mal als Einstieg.

Wenn was unklar ist, einfach fragen, „dumme“ Fragen gibt es bei so einem Thema eh nicht. Und was macht Ihr mit Bots? Oder würdet Ihr gerne machen? Was haltet Ihr überhaupt davon?

Wir haben mittlerweile übrigens eine ganze Reihe von Telegram-Artikeln, etwa zu einem schicken CLI-Client.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

149 Kommentare

  1. Hallo lieber Mirko,
    Danke für deine Hilfe hier auf dieser Seite. Ich habe ein Problem mit dem Captcha bei der Begrüßung. Wie viele andere Gruppen auf telegram soll auch in meiner ein bestätigungstext erscheinen, wo man eine Schaltfläche anklickt und damit bestätigt, dass man ein Mensch ist und kein bot oder Roboter. Irgendwas haut da nicht hin. Der @GroupHelpBot liess mich eigentlich alles genau einstellen. Kann es sein, dass ich, wenn ich einen Willkommens Text an anderer Stelle definiert habe, dieser den Captcha Text überlagert oder verdrängt?

    1. Da bin ich so spontan leider überfragt, mit dem Group Help Bot habe ich mich bislang noch nie beschäftigt. Werde ich die Tage aber mal nachholen und mich melden, wenn sich da was ergibt.

      1. … okay, oder auch nicht, nach ein wenig Recherche. Der Bot speichert so ziemlich alles an Daten, was er in die Finger bekommt – bis zu 20 Jahre nach Löschung eines Telegram-Accounts. Wo? Wie? Keine Infos. Es gibt so gut wie keine Infos zum Hersteller (Bruno Andreuccetti), kein Impressum und vor allem absolut nichts über die Software dahinter. Und so etwas mache ich ungern zum Admin einer Gruppe.

        Um es ganz klar zu sagen: Der/Die/Das Betreiber des Bots kann alle Nachrichten mitlesen, mit Nutzer-IDs, Email-Konten aus Zahlungsvorgängen, Biographie und so weiter verknüpfen – und zwar über die betroffene Gruppe hinweg! Mir persönlich fallen da sehr schnell sehr viele sehr unredliche Einsatzmöglichkeiten ein. Gut, Telegram selbst kann das natürlich auch, aber Telegram als Serviceanbieter ist dann doch noch etwas anderes als ein Add-on einer Einzelperson, über die so gut wie nichts bekannt ist.

      2. Frage: ich habe eine Gruppe, aber keine Ahnung von bots. Über die Hilfe (hilfe-bot) bekam ich Infos und irgendwann das Angebot einen von den Typen privat an zu schreiben. Hab ich dann auch gemacht. Er hat mir sehr geholfen, bot erstellt und programmiert und anschließend hat er sie Gruppe wieder verlassen.

        Jetzt möchte ich gerne etwas am captcha ändern (Sprache und zeit). Ich erreiche ihn aber nicht mehr, bzw. Er antwortet nicht.

        Darum meine Frage: Hat er von außen zugriff auf den bot wenn er nicht mehr in der Gruppe ist? Habe ich Möglichkeit zu zugriff auf die Einstellungen des bot, wenn ich ihn nicht selbst programmiert habe?

        Im Notfall löschen ich alle bots und muss dann eben schauen, wie ich das regle, dass ich da wieder einen bot rein kriege. Ist das schwer für einen Laien ohne Vorahnung so einen bot ein zu stellen?

      3. Ja, das sind natürlich noch völlig ungeklärte Aspekte. Schwierig, da die richtige Entscheidung zu treffen. Aber derzeit bin ich auf diesen Bot in meiner Gruppe sehr angewiesen, da er mir die vielen asiatischen Trolle vom Leib hält.

    2. Inzwischen klappt soweit alles. Vielleicht musste man einfach eine Weile warten, bis sich im Netz von Telegram die Befehle durchgesetzt hatten. /reload hilft ja auch manchmal.

  2. Wie kann ich bei einem Bot Clone einstellen, dass er von anderen Unsern für fremde Gruppen nicht genutzt werden kann?

    1. Bist du der Admin der besagten Gruppe? Wenn ja, dann kannst du mit /Settings ein umfangreiches Konfigurations- Menü aufrufen, in dem du zum Beispiel einstellen kannst, dass kein Gruppen- Teilnehmer Bot-Kommandos aufrufen darf. Damit bist du schon mal abgesichert.

  3. Hallo,
    ich habe mehrere Telegram-Gruppen. Teilweise sind diese bereits mit Bots versehen (haben mir liebe Menschen er- und eingestellt) – teilweise haben wir jetzt neue Gruppen – bisher ohne Bots – in denen wir verschiedene Probleme haben und deshalb Bots einrichten würden. Somit denke ich ist es langsam mal an der Zeit, mich in die Thematik Bot einzuarbeiten. Dazu könnte man doch die in den anderen Gruppen vorhandenen Bots (z.B. Alexis, Rose etc.) auch für die neuen Gruppen nutzen?

    Ich bin zwar schon Ü50 – aber durchaus noch lernfähig – und möchte nicht immer die Zeit anderer Menschen in Anspruch nehmen mir die nächsten Gruppen mit Bots zu versorgen.

    Mein Problem ist – ich will keine neuen Bots erstellen, sondern nur die bereits vorhandenen nutzen – installieren – und entsprechend einstellen. Z.B. daß niemand Nutzer mit arabischen Schriftzeichen im Namen zufügen kann, eine Begrüßung neuer Mitglieder mit einer Reaktion die sie ausführen müssen etc.

    Hab jetzt läger gegoogelt – aber ich finde nur Anleitungen zum Erstellen neuer Bots – aber nicht zum Konfigurieren von bereits erstellten Bots. Kann mir da jemand Links geben – oder mir helfen?

    1. Bots lassen sich Gruppen genauso hinzufügen wie Nutzer, also einfach „Neuer Nutzer“ und dann den Bot suchen und hinzufügen. Bots, die noch nicht in den KOntakten sind lassen sich auch ganz normal über die Suchfunktion finden und dann im direkten Dialog starten – in der Regel erscheint bei Auswahl eines Bot-Kontos auch gleich entsprechende Information.

      Die Konfiguration läuft bei eigenen Bots in der Regel über den BotFather, dort zeigt zum Beispiel ein „/mybots“ Deine eigenen Bots an. Oder der Bot lässt sich im direkten Dialog konfigurieren – ein / zeigt die Optionen an.

      1. Danke für die Antwort. Das Zufügen ist nicht das Problem. Soweit bin ich schon drin in der Materie. Und man muß ihm dann Admin-Rechte geben – stimmts?

        Ich würde einfach die gleichen Bot für die neuen Gruppen nutzen wie in meinen bereits bestehenden – die mir ein netter Mensch instaliert und konfiguriert hat. Weil die einfach funzen. Aber an die Konfiguration trau ich mich noch nicht ganz ran. Vor allem finde ich das total doof – daß jeder in dieser Gruppe dann sehen kann was ich mache – und sich notfalls schlapp lachen kann. Gibt’s da keine Möglichkeit das im Hintergrund einzustellen – und dann erst auf die Gruppe loszulassen?

        Sehe ich das richtig – ich füge den Bot der Gruppe hinzu, gebe ihm Admin-Rechte – und schaue dann mit / was ich wie konfigurieren kann?

      2. Hast du es schon mal mit dem @GroupHelpBot versucht? Wenn du den mal über die Suchfunktion innerhalb Telegramm einmal ausfindig gemacht hast, kannst du ihn starten und konfigurieren. Es öffnet sich dabei ein eigenes Chatfenster, nur für diese Konfigurationen. Dort findet er dann von selbst die Gruppen, in denen du Admin bist. Du musst ihn dann als nächstes als Gruppenmitglied hinzufügen und ebenfalls zum Admin machen. Dann kannst du über eine recht anschauliche Oberfläche, in der auch Dinge erklärt werden (!), steuern. Es ist nicht immer „what you see is what you get“, aber indem man probiert, kommt man schon vorwärts.

    2. Liebe Katrin,
      @GroupHelpBot
      kannst du so einstellen, dass weder „chinesische“ noch „kyrillische“ oder „arabische“ Schriftnutzer reinkommen (separat einstellbar). Siehe hier meine ausführlichere Antwort dazu weiter unten / oben .

  4. Hi Mirco!
    Bei uns in der Gruppe ist ziemlich was los und wollten einfach mal schauen, welcher Nutzer die meisten Leute eingeladen hat, wer am aktivsten ist usw.
    Jetzt wollte ich mal fragen, ob man das irgendwie mit dem Bot machen kann.
    Bin ziemlich neu bei Telegram und bin dankbar für jede Hilfe!!

    Beste Grüße Dominik

    1. Sorry, übersehen … falls noch relevant:
      Sicher bin ich da nicht, aber die API scheint – nach kurzem Drübergucken! – derlei Informationen nicht direkt zu liefern. Vermutlich müsste man dafür dann doch etwas mehr programmieren. Die Möglichkeiten von Bots findest Du jedenfalls in der API-Übersicht ganz gut dokumentiert:
      https://core.telegram.org/bots/api

      Solche administrativen Aufgaben dürften aber nicht untypisch sein, insofern würde ich erstmal schauen, ob es nicht bereits irgendwo irgendwas Fertiges dafür gibt. Nennen könnte ich aus dem Stand allerdings keines.

  5. Hallo, ich versuche mich gerade in das Thema Bot einzuarbeiten.
    Ich habe in Botfather einen Bot erstellt und kann ihn nun verwenden um likes oder comments unter meine Beiträge zu stellen. In meiner Gruppe funktioniert das nicht.

  6. Hallo,
    ich lasse mir mit
    curl -X POST „https://api.telegram.org/bot12345:abcdefgh/sendMessage“ -F chat_id=-1234567 -F text=“%1 %2 %3 %4 %5 %6 %7″
    einen Satz in eine Telegram Chat schreiben. Geht soweit. Wenn der Satz aber Umlaute enthält geht es aber nicht und ich bekomme die Fehlermeldung: string must be encoded in utf-8
    Wie kann ich das umsetzen?

    1. Du kannst Umlaute einfach in URL-Kodierungen angeben – hier eine Liste.
      Hier ein Beispiel für Hallö:

      curl -X  POST 'https://api.telegram.org/ABCDEFG/sendMessage?chat_id=-123456&text="hall%C3%B6"'
      
      1. Vielen Dank für deine Antwort. Das wird so sicher funktionieren. Ich benutze aber Platzhalter alsText. Der Satz kommt von einem anderen Programm. Es soll alles automatisch ablaufen. Gibt es einen besseren Platzhalter als die „%1“ die ich verwende? Oder muss ich einen Umweg über eine Text-Datei nehmen und die in utf-8 übersetzen?

      2. Vielen Dank für deine Mühe, ich dachte es wäre nur eine kleine Einstellung die falsch war.

      3. Ich habe nun eine Lösung gefunden. Am Anfang der Batch @chcp 65001 einfügen und die neueste Version von Curl benutzen. Windows 10 bringt auch Curl mit. Diese Version ist aber zu alt. Desweiteren den Pfad zu der neuen Curl.exe angeben, damit nicht die Version von Win10 benutzt wird. Beispiel:

        c:\curl\bin\curl -X POST "https://api.telegram.org/bot12345:ABCDE/sendMessage" -F chat_id=-12345 -F text="%*"
        
  7. Hi,
    weiß vielleicht jemand ob man mit dem Telegram Bot per VBA auch Umfragen erstellen kann? Wenn ja wie würde die https Befehlszeile denn aussehen?

    Derzeit habe ich nur ein VBA um Texte, Dateien und Fotos zu senden.

    Mit freundlichen Grüßen
    Chris

    1. In einer einzigen curl-Anfrage wird das nicht funktionieren. Aus dem Bauch heraus würde ich zum Posten in mehrere Chats die ID aus der curl-Anfrage einfach durch eine Variable ersetzen:

      id1=botABCDE:123456
      id21=botZDXYW:99887766
      curl -X  POST 'https://api.telegram.org/'$id1'/sendMessage?chat_id=-111111111&text="texty text"'
      curl -X  POST 'https://api.telegram.org/'$id2'/sendMessage?chat_id=-111111111&text="texty text"'
      

      Da könntest Du dann bei Bedarf per Schleife Dutzende Chats bespaßen.

  8. Vielen Dank für die Hilfe… leider funktioniert das wie o.g. nur bei Linux.
    Ich habe es nach langem tüfteln und mit Hilfe rausbekommen.

    Trotzdem vielen Dank

  9. Hey,
    Vielen Dank für deine Anleitung. Leider komme ich nicht weiter, weil ich die ChatID einfach nicht bekommen.
    Mein Bot ist schon einige Jahre alt und ich benutze ihn regelmäßig. Trotzdem bekomme ich das (auch weiter oben mehrmals von anderen erwähnte):
    {„ok“:true,“result“:[]}
    als Antwort mit curl…
    Ich habe dann extra nochmal einen neuen Bot erstellt mit dem selben Ergebnis. Neben „/start“ habe ich auch einfach mal „teeeest“ etc in den Chat mit dem Bot geschrieben. Leider ohne Erfolg.
    Hast du noch nen Tip für mich? Geht die Methode evtl nicht mehr um die ID zu erfahren? (Wenn man die ID mal hat, könnte es ja sein, dass es weiterhin funktioniert).
    Vielen Dank im Voraus
    Max

      1. Hey,
        vielen Dank für die schnelle Antwort.
        Leider steht da bei mir nur „@BOTNAME“ oder „@CHATNAME“ und keine ID…
        also im Chat mit botfather steht da „@botfather“ in meinem testkanel „@testkanal“.
        Nur bei der Meldung von Telgram, dass sich jemand im Netz angemeldet hat (ich – gerade im Browser), steht eine ID… Alle anderen Chats und Kanäle sind nur per Name benannt :(

      2. Da ich dasselbe Problem habe, wie Max M, nämlich die Chat ID nicht herausbekomme, habe ich Deinen Tipp probiert. Leider ohne Erfolg.
        Bei mir wird in der Adresszeile des Browsers nicht die Chat-ID, sondern die des Bots angezeigt :(
        Hat jemand eine andere Idee? Bkn am verzweifeln …

    1. Das dürfte an den Privacy-Einstellungen liegen: Im Botfather über /setprivacy deaktivieren oder versuch mal, eine Nachricht in dem Chat abszusetzen, die mit / beginnt, also zum Beispiel /foobar. Nachrichten mit / kann der Bot trotz gesetzter Privacy-Option lesen. In beiden Fällen nicht vergessen, erst eine Nachricht abzusenden, dann über curl das getUpdates absenden – sonst bleibt das Updaten natürlich leer.

      1. Hey,
        auch dir danke für die schnelle Antwort.
        Leider hat das keinen Erfolg gebracht. Beide bots waren tatsächlich auf „enable“ bei /setprivacy gesetzt. Das disablen hat aber leider nichts gebracht.
        Ich habe beide Bots abgefragt und beim zweiten kam die Meldung, dass zwei Bot Instanzen laufen (nach ein paar Sekunden, dann aber wieder die „leere“ Antwort).
        Ich habe bei meinem alten Bot schon sehr viele /1234abc Nachrichten geschickt seit es den gibt.
        EDIT: Während ich das hier geschrieben habe, habe ich weiter probiert und plötzlich ging es. Es scheint, als ob irgendwas ein paar Gedenk minuten braucht um zu reagieren. Außerdem scheint es wichtig zu sein, einen Kanal anzulegen und den Bot hierein einzuladen? Ich muss jetzt leider arbeiten und kann nicht weiter testen. Aber folgendes ist jetzt passiert:
        BOTalt ist in einem öffentlichen Kanal (von mir erstellt) zusammen mit mir. Ich habe dort über die WEBapi eine nachricht geschrieben. Wenn ich jetzt über CURL den BOTneu abfrage, bekomme ich IDs angezeigt der Nachrichten im Kanal mit dem alten Bot… Also irgendwie seltsam… Ich Frage den neuen Bot ab und bekomme die Nachrichten im Kanal mit dem alten Bot angezeigt? Wenn ich von der Arbeit komme, versuche ich es nochmal andersrum und dann versuche ich es nochmal nachdem ich den BOTneu mal lösche.

      2. So, ich bin jetzt zuhause und habe es getestet.
        Mit meinem Bestandsbot klappt es einfach nicht. Ich habe alles so gemacht wie beim neuen bot und bekomme einfach keine ID… sehr seltsam. Muss ich wohl zwei Bots unterhalten:(

      3. Also, um mich selbst zu korrigieren.
        Wenn ich mit dem Token des neuen Bots den CURL Befehl eingebe, bekomme ich die ID des ALTEN Bots angezeigt, sowie die Chat-ID des Kanals in dem der ALTE Bot ist.
        Andersrum klappt es nicht. Ist mir aber auch egal, da ich den NEUEN Bot jetzt gelöscht habe und über den CURL….sendMessage Befehl inkl Token des ALTEN Bots jetzt Nachrichten an den alten Bot und den Kanal mit dem alten Bot schicken kann. Alles etwas komisch, aber es klappt

  10. Servus

    folgende Frage
    Ich bekomme regelmäßig Faxe… aber immer mit Datum und Uhrzeit versehen. Das sich natürlich ändert..
    Hier muss ich ja den genauen Dateinamen angeben. Gibt es eine Möglichkeit das er das immer sendet trotz anderen ziffern?
    Am besten gleich mit der möglichkeit nach dem versenden an Telegram zu löschen im Ordner…..

    (BEISPIEL)
    curl -X POST „https://api.telegram.org/botxxxxxx:xxxxxxx/sendDocument“ -F chat_id=-12345678 -F document=“@//Fritz-nas/fritz.nas/Sony-StorageMedia-01/FRITZ/faxbox/25.08.19_14.19_Telefax.080000854334565.pdf“

    1. Es kommt ein wenig drauf an, was genau Du tust und was in den Ordner liegt. Angenommen in dem Ordner liegt nur diese eine PDF-Datei, die verschickt und dann gelöscht werden soll, dann wäre das hier ein möglicher Workflow:

      fax=$(ls *.pdf)
      curl -X POST „https://api.telegram.org/botxxxxxx:xxxxxxx/sendDocument“ -F chat_id=-12345678 -F document=“@//Fritz-nas/fritz.nas/Sony-StorageMedia-01/FRITZ/faxbox/$fax“
      rm $fax
      

      Du gibst also eine Variable statt des Dateinamens an. Wie genau Du den korrekten Dateinamen in die Variable bekommst, hängt von den Umständen ab. Ein „ls *.pdf“ funktioniert natürlich nur, wenn es nur ein PDF im Ordner gibt. Ansonsten müsstes Du mit regulären Ausdrücken arbeiten, also (recht komplexen) Beschreibungen des Dateinamens:

      fax=$(find . -maxdepth 1  -printf "%f\n" | egrep '^[[:digit:]]{2}\.[[:digit:]]{2}\.[[:digit:]]{2}_[[:digit:]]{2}\.[[:digit:]]{2}_Telefax.080000854334565.pdf')
      

      Die Regex nach egrep passt, wenn die Zeile mit zwei Ziffern beginnt (^), dann ein Punkt folgt (.), dann wieder zwei Ziffern, ein Punkt, zwei Ziffern, ein Unterstrich, zwei Ziffern, ein Punkt, zwei Ziffern, ein Unterstrich und dann Telefax.080000854334565.pdf.

      Zum Testen kannst Du auf Regex101 herumspielen.

  11. Servus

    folgende Frage
    Ich bekomme regelmäßig Faxe… aber immer mit Datum und Uhrzeit versehen. Das sich natürlich ändert..
    Hier muss ich ja den genauen Dateinamen angeben. Gibt es eine Möglichkeit das er das immer sendet trotz anderen ziffern?
    Am besten gleich mit der möglichkeit nach dem versenden an Telegram zu löschen im Ordner…..

    (BEISPIEL)
    curl -X POST „https://api.telegram.org/botxxxxxx:xxxxxxx/sendDocument“ -F chat_id=-12345678 -F document=“@//Fritz-nas/fritz.nas/Sony-StorageMedia-01/FRITZ/faxbox/25.08.19_14.19_Telefax.08213240.pdf“

  12. Hallo, ich betreibe einen Chat auf unserer Vereinshomepage. Ich lasse mir per Telegrambot eine Nachricht schicken, wenn jemand den Chat betreten hat. Ich möchte jetzt auch die Nachricht bekommen, dass sich der Chatuser auch ausloggt!
    Bin kein php oder html Kenner und habe mir bisher alles aus dem Internet zusammen gelesen, aber für die Logout habe ich absolut nichts gefunden.
    Kannst du mir helfen?
    Danke Christof

    1. Da muss ich passen, das ist eher eine Frage des eingesetzten Chats.

      Grundsätzlich sehe ich zwei Möglichkeiten: Entweder in der Chat-Software wird das Ein- und Ausloggen schlicht mit einem zusätzlichen (PHP-)Befehl versehen, sprich es wird eine URL aufgerufen, die der hier im Artikel beschriebenen Terminal-Variante recht ähnlich ist. Vielleicht hilft hier ein Beitrag auf Stack Overflow weiter. Oder wenn das nicht geht: Basteln/Scripting. Auch hier kommt es auf die Chat-Software an, aber vermutlich könnte man irgendwie die angemeldeten Nutzer auslesen, in einer temporären „Datenbank“ (Array, Textdatei, echte Datenbank) speichern, diese zum Beispiel fünfminütlich abfragen und bei Änderungen entsprechend per Telegram Meldungen verschicken.

      Aber wie gesagt, da kann vermutlich der Hersteller der Chat-Software eher helfen. Ich weiß, dass das nicht immer in Frage kommt, aber die einfachste Variante wäre vermutlich: Chat von der Website in eine Telegram-Grupp verlegen ;) Aber gut, da müssten dann alle Mitglieder mitziehen …

      1. Hallo, ich danke dir für deine Tipps, werde es weiter versuchen.
        Gruß Christof

  13. Hallo,

    ich verwende einen Telegram-Bot mit ioBroker. Habe mir ein script geschrieben, das mir den Status meiner Smarthome-Geräte via Telegram schickt. Soweit funktioniert auch alles, allerdings bekomme ich nach jeder Nachricht eine zweite geschickt. Der Inhalt der Nachricht lautet: „Test message“.
    Warum wird mir diese Nachricht geschickt und wie bekomme ich die weg?

    LG,
    Philipp

    1. Ich muss ein wenig raten … Von Telegram dürfte die Nachricht eigentlich nicht stammen, ist mir jedenfalls noch nie untergekommen und ich wüsste auch nicht wo die herkommen sollte. Nutzt Du vielleicht den ioBroker telegram adapter von https://github.com/iobroker-community-adapters/ioBroker.telegram? Falls ja: In den Beispielaufrufen kommt exakt „Test message“ vor – da würde ich vermuten, dass Dir beim Aufsetzen irgendwo so ein Beispiel mit rein gerutscht ist. Die einzige Alternative, die mir spontan einfällt wäre, dass irgendein Smarthome-Gerät diese Nachricht schickt – erscheint mir aber nicht sonderlich plausibel.
      Wie gesagt, ich muss ein wenig raten, für alles andere gibt es da für mich zu viele Unbekannte (Skripte, genutzte Geräte etc.).

      1. Hallo Mirco,

        Ja ich benutze den https://github.com/iobroker-community-adapters/ioBroker.telegram Adapter.

        Habe ihn jetzt auch schon gelöscht und ihn nochmals installiert. Die Meldung wird weiterhin gesendet.

        Habe schon in allen Objekten die den telegram adapter betreffen und auch die von text2command nachgeschaut. Finde jedoch nichts was das auslösen könnte.

        Habe jetz ein einfaches JavaScript erstellt, und führe dieses aus.

        sendTo(„telegram“, „send“, {
        text: ‚Hallo Welt!‘
        });

        Immer noch die zweite nachricht die mir Test message anzeigt.

        Keine Ahnung.
        Danke für deine Antwort!
        LG,
        Philipp

  14. curl -X POST ‚https://api.telegram.org/bot123456:abcde1234ABCDE/sendMessage?chat_id=-4194264&text=“texty text“‚
    […]
    Und schon landet die Nachricht „texty text“ in Eurem Telegram-Account, abgesandt von „Nutzer“ TutoBot in unserem Beispiel.

    Das ist leider nicht der Fall, es kommt lediglich eine Fehlermldung (not found). Das war’s dann wohl. Ich liebe solche Anleitungen, die davon ausgehen, dass alles klappt, und wenn nicht, dann eben nicht…

    1. So ist das eben mit Anleitungen, man kann darin nicht jede Eventualität abbilden … Wenn Du ein paar mehr Infos als die unvollständige Fehlermeldung hast, wuppen wir Dich bestimmt noch auf die klappt-Seite. Wenn Du zum Beispiel „command not found“ meinst, könnte schlicht das Programm curl fehlen.

      Ich habe den Befehl eben nochmal getestet – funktioniert immer noch. In Deinem zitierten String steht der ganze http-String in Kommata, obwohl da einfache Anführungszeichen hingehören, also so:

      curl -X  POST 'https://api.telegram.org/bot123456:abcde1234ABCDE/sendMessage?chat_id=-4194264&text="texty text"'
      

      Ohne die Anführungszeichen würde der Terminal alles nach dem & als neuen Befehl interpretieren und entsprechend für den Nicht-Befehl „text“ ein „command not found“ ausgeben. Hilft das vielleicht schon?

  15. Für Dummies:
    Wann ist das online? Muss der PC dafür an sein? Muss man einen Server mieten? Oder läuft das über Telegrams Server dauerhaft?

  16. Irre ich mich, oder steht wirklich nirgends, wozu man das gebrauchen kann? Wenn ich richtig verstehe, kann ich Texte versenden, aber ich erkenne nicht, an wen ich die versenden kann. Gibt es vielleicht irgendwo eine Erläuterung, die man verstehen kann, wenn man nicht schon vorher Bescheid weiß?

    1. An wen Du schreibst, steht unter Schritt 2 – an die herausgefundene Chat-ID. Die Chat-ID steht für einen der Kontakte/Chats. Über die Namen der Kontakte geht das leider nicht.

  17. Hallo!

    Toller Beitrag!
    Gibt es auch eine Möglichkeit Videoanrufe zu tätigen?
    Ich möchte, dass mich der Bot auf Anfrage anruft und mir einen Livestream meines 3D Druckers sendet.

    1. Danke! Und: Sehr schöne Frage, hört man auch nicht alle Tage ;)
      Ich glaube eher nicht dran, die Bot-API scheint nichts zum Initiieren von Anrufen herzugeben, da müsstest Du vermutlich über die Telegram-API richtig programmieren, einen Video-Call-only-Client oder sowas. Sicher bin ich mir da allerdings nicht.

      Ich hab’s eher mit kruden Umwegen.
      So aus dem Bauch heraus: Man könnte bestimmt einen Telegram-(Web)-Client so einstellen, dass er immer nur die neueste Nachricht zeigt. Und da so ein Webcam-Livestream nur eine Reihe von Bildern ist, könnt man ihn in Einzelbilder zerlegen davon 25 pro Sekunde an Telegram schicken; oder wie viele auch immer die Technik überhaupt möglich machen würde. Einfacher dürfte es sein, ein Skript auf Zuruf ein X-Skunden langes Video zu machen und dann per Telegram zu verschicken – wenn es nur um kurze Kontrollen geht. So oder so ist es Skripterei-Bastelarbeit.

      Ich persönlich würde vermutlich den Aufwand scheuen und einfach die Weboberfläche einer Webcam nutzen …

      1. Die Bot-API könnte doch was hergeben: Beim Senden von Videos gibt es eine Option „supports_streaming“ – vielleicht läuft das eine Möglichkeit hinaus. Wenn die Kamera in eine Videodatei streamt – wer weiß, vielleicht ließe sich diese Datei senden und noch vielleichter würde das als Stream ankommen … Ich würde jedenfalls mal da ansetzen.

  18. Vielen Dank für diese Super-Beschreibung! Mein Sohn wollte für seine HomeMatic Überwachung diesen Dienst nutzen, hatte aber nichts zu Senden an Gruppen gefunden. Mit dieser Anleitung hat es bei mir auf Anhieb geklappt.

  19. Wie kann ich Telegram beibringen, mir zu bestimmten Zeiten das Guten Morgen und gute Nacht Wünschen abzunehmen? Wahlweise meinetwegen mit Emojis…

    1. Mal so spontan: Bastel wie hier beschrieben einen Befehl, pack ihn in ein Skript und lass es über cron zu den gewünschten Zeiten ausführen. Dafür muss natürlich irgendwo ein Linux-Rechner ganztägig laufen. Wobei ein Android-Smartphone auch genug Linux-Computer dafür ist: Hier ab Schritt 6 beschrieben.

  20. Danke für die Anleitung
    die erst Hürde zur Erkennung der ChatID (Chat erst starten) könnte man evtl. noch einfacher darstellen

    und mit curl unter Windows war auch trickreich
    Die Hochkommata tausch war bei mir nicht genug, das Minus – vor der Chat-ID hat er auch nicht angenommen.
    Falls da noch jemand drüber stolpern sollte :)
    curl -X POST „https://api.telegram.org/botBOTID/sendMessage?chat_id=CHAT-ID&text=’texty text'“

  21. Erst einmal danke für das gute Tutorial hat mir sehr geholfen.
    Nun hätte ich eine Frage, am einer bestimmten Anzahl an Updates werden nur noch die gleichen Messages angezeigt, wie bekomme ich die neuesten Nachrichten?

    VG
    Sven

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Schaltfläche "Zurück zum Anfang"
Schließen

Ooopsi!

Bitte deaktiviere Deinen Adblocker.