Kurznachrichten per Telegram Bot verschicken

Whatsapp als Instant Messager fürs Smartphone kennt natürlich jeder. Telegram ist (leider) nicht so bekannt.
Früher war ich auch Whatsapp-User, so wie alle anderen halt auch 🙂

Doch dann hat Facebook Whatsapp aufgekauft!
Nachdem ich aber strikter Facebook-Verweigerer bin, und ich nicht auch noch meine Telefonnummern und sonstige Handyinhalte dieser „Firma“ frei Haus liefern will, musste ein Alternative her!
(Wenn etwas kostenlos ist könnte es sein dass man nicht der Kunde sondern die Ware ist!)

Mittlerweile bin ich bei Telegram und dort auch recht glücklich.
Es dauert zwar lange bis man die meisten Freunde überzeugt hat doch bitte nun Telegram zu nutzen, aber viele hab ich nun soweit. Zumindest die wichtigsten!

Eine tolle Sache an Telegram (neben der obligatorischen Ende-zu-Ende Verschlüsselung die sich vom Konzept her sicher anhört, der ich aber trotzdem nicht trauen würde) ist die Tatsache dass es -im Gegensatz zu Whatsapp- eine offene API gibt die man ganz einfach per Python (oder sonstiger Programmiersprache die Web-Requests kann) ansteuern kann!
Hier gehts zur Doku der API: Telegram Bot API

Und wie geht das nun?
Zuallererst suchen wir den Telegram User mit dem Namen ‚BotFather‘ und chatten mit ihm. Der BotFather erlaubt es uns neue Bots zu erzeugen und unsere Bots zu managen!

Mittels ‚/start‘ sagt er uns welche Befehle er kennt.
Mittels ‚/newbot‘ baut er einen neuen Bot für uns.

Der Bot benötigt nun einen Usernamen und einen Profilnamen und als Ergebnis kriegen wir einen API-Key mit dem wir (und jeder sonst auch) diesen Bot dann steuern können:
telegram_botfather_newbot

Wenn wir nun den API-Key haben, er sieht z.B. so aus:

4546845486486:SDDASD_-fsdf8zfasklsiQ

dann könnten wir noch mittels ‚/setuserpic‘ ein Profilfoto setzen:

telegram_botfather_botpic

Und jetzt kommen wir endlich zur Programmierung. Hier gibts ein, schon ziemlich vollständiges, Python-Programm welches alle Befehle relativ deutlich erklärt:

telegram_bot.py3
(Braucht man wohl nicht zu erwähnen dass der API-Key falsch ist, und das Programm ohne Änderung also nicht funktioniert!)

Der Code ist für Python3 geschrieben und das Requests Modul wird benötigt.
Unter Ubuntu sollte also alles mit:

apt-get install python3
apt-get install python3-pip
pip3 install requests

zu erledigen sein.

Was können nun Bots?
– Nachrichten empfangen
– Nachrichten senden
– Nachrichten senden und eine spezielle Tastatur senden (JA/NEIN)
– Nachrichten die der Bot empfängt können auch von Telegram direkt an eine URL gesendet werden (Webhooks)- Bilder und Dateien können gesendet und empfangen werden

Die Nachteile?
– Bots können nicht von sich aus Menschen anchatten. Sie müssen von dem Mensch erst geaddet werden oder in einem Chat mit ihm sein!

Und was macht nun dieser Glubbbot?
Ich habe einen Bekannten der ist riesiger-Fan vom 1. FCN – nur oftmals kann er das Fußballspiel natürlich nicht live ansehen. Er muss aber natürlich trotzdem sofort und augenblicklick wissen wenn ein Tor gefallen ist!
Und genau das macht mein Glubbbott. Er parsed eine Seite mit Fußballergebnissen, und sobald dort ein Tor gefallen ist schickt er per Telegram eine Nachricht. Das sieht dann so aus:

telegram_glubbbot

Hier noch ein paar Credits und Links zum Thema:
Quelle fürs erzeugen von Bots: https://core.telegram.org/bots
Quelle für Bot-API Methoden: https://core.telegram.org/bots/api#available-methods
Quelle fürs Python Requests-Modul: http://docs.python-requests.org/en/latest/
Quelle für einen (kleinen) Teil des Python-Codes – noch mit urllib-Modul: http://stackoverflow.com/questions/24330…pis-or-cli


Kommentare

23 Antworten zu „Kurznachrichten per Telegram Bot verschicken“

  1. Meckerer

    „Doch dann hat Facebook Telegram aufgekauft.“
    Whaaaaaaaaat?!

    1. Thomas

      Jetzt hat Facebook erstmal WhatsApp und Facebook besser miteinander verzahnt. Facebook kriegt von Whatsapp nun deine Handynummer und die Infos wie oft du WhatsApp nutzt. Ich denke das ist erst der Anfang, und für mich ein Beweis mehr dafür dass es gut ist weder Facebook noch WhatsApp zu nutzen.

      1. ZAPP

        Der Meckerer wollte vermutlich eher auf Deinen Verschreiber hinweisen. In Deinem Text steht, dass Facebook ++Telegram++ aufgekauft hat und Du deswegen nun Telegram verwendest. Das muss natürlich WhatsApp heißen. 😉

    2. chris

      Könntest du einen Bot bei Telegram einrichten der alle Nachrichten zum 1. FC Nürnberg auf kicker.de automatisch als Textnachrichten, sowie zusätzlich den gesamten Ticker bei Spielen des 1. FCN bei kicker.de minutlich als Textnachrichten verschickt und am Ende eines jeden Spieltages die Tabelle zum 1. FC Nurnberg als Textnachrichten verschickt?

      Und im Anschluss den Namen dieses Bots hier veröffentlichen.

      Das wäre super Klasse von dir!

      1. Thomas

        Hallo Chris,

        naja, wir könnten das gemeinsam machen.
        Der erste Step wäre überhaupt eine Seite zu finden wo wir diese Informationen holen könnten – hast du da eine?

        Und dann schauen wir mal weiter. Statt einem eigenen Server kann man da evtl. eine AWS Funktion nehmen die das tut, könnt ich mir mal ansehen, bislang hab ich immer einen Server für sowas genommen.

        Thomas

  2. Thomas

    Hallo ZAPP,

    autsch. Doofer Fehler.
    Habs im Text korrigiert. Vielen Dank für den Hinweis 🙂

    Thomas

  3. […] Wie der aufmerksame Leser mittlerweile wissen sollte nutze ich kein WhatsApp. Kann ich als Facebook-Verweigerer ja auch garnicht. Stattdessen nutze ich Telegram, und bin damit recht zufrieden. Vorallem weil Telegram (im Gegensatz zu WhatsApp) eine offene API hat die es leicht macht Bots zu programmieren. […]

  4. eiGelbGeek

    Würdest du das FCN Script auch veröffentlichen ?
    Okay … ich würde den Verein ändern …. aber das tut ja nix zur Sache 😉

    1. Thomas

      Hallo eiGelbGeek,

      natürlich. Ich mach morgen nen Beitrag dazu!

      Thomas

      1. eiGelbGeek

        Danke 🙂

  5. […] Beiträgen beschrieben habe wie einfach man den Kurzmessenger Telegram mit Python ansteuern kann (hier, hier) wollte nun jemand den Programmcode meines Programmes haben welches automatisch mit einem Bot […]

  6. Patrick

    Tolle Sache gut beschrieben – Herzlichen Dank.

  7. Bernd

    Hallo Thomas,
    ich habe Interesse, einen Telegram-bot zu erstellen. Dazu habe ich bereits einen Bot-Namen und den token für die API erhalten. Soweit, sogut.
    Aber ich brauche jetzt Python?!
    Null Ahnung wie das funktioniert.
    Über „meinen“ Bot will ich meine Kunden Neuigkeiten zukommen lassen (sofern sie diesen auch abonnieren). Aber wie komme ich überhaupt dahin?
    Ich verwende hier Windows 10 und kein Linux. Wie programmiere ich meinen Bot? Muss ich Python auf dem Rechner installieren, oder….?

    Gibt es irgendwo eine Anleitung von A-Z, so wie ein Kochrezept, um das Ganze einzurichten? Egal wo ich lese, es wird schon recht viel an Wissen vorausgesetzt.
    Kannst Du mir irgendwie weiterhelfen???

    Danke.

  8. Thomas

    Hallo Bernd,

    ja du hast recht. Der Weg ist noch weit und ja, du musst Python installieren.

    Ob Windows oder Linux ist dabei egal. Lad dir einfach myl Python runter und spiel mit den Programmcodes in diesem Beitrag rum, das sollte auf Anhieb funktionieren.
    Meld dich einfach wenn du irgendwo hängst!

    Thomas

    1. Bernd

      Hallo Thomas,
      Wo finde ich myl Python?
      Werde mal die Suchmaschine meines Vertrauens fragen.
      Dankeschön.

        1. Bernd

          Danke

  9. Denis

    pi@raspberrypi:~ $ /etc/init.d/glubbot.py3
    Lese Daten
    Problem mit gespeicherten Daten. Setze leere Daten.
    Daten haben sich geaendert. Schicke Nachricht
    Traceback (most recent call last):
    File „/etc/init.d/glubbot.py3“, line 109, in
    if len(newdata[„spieldescription“]) >= anz_zeichen_beschreib:
    TypeError: object of type ‚NoneType‘ has no len()

    Hallo, wo ist den hier der fehler? Oder ist alles richtig?

    1. Thomas

      Er scheint keine spieldescription gefunden zu haben. Schau dir mal den kompletten Inhalt von newdata an. Irgendwas fehlt da oder wurde nicht gefunden!
      Fehler sollte das Programm eigentlich nur werfen wenn irgendwas nicht passt!

  10. jal2

    Hallo,
    ich habe das heute zum ersten Mal probiert. Einen Bot eingerichtet, ein GET auf https://api.telegram.org/bot/getMe liefert auch korrekte Informationen, aber ein GET auf https://api.telegram.org/bot/getUpdates sagt immer nur {„ok“:true,“result“:[]}, auch wenn ich zuvor Fotos an den Bot weitergeleitet hatte. Hat sich die API inzwischen geaendert? Muss ich mit dem offset Parameter arbeiten?

  11. Joachim

    Hallo,
    ich verwende Windows10 und Python 3.7, habe das Python-Script in eine .py-Datei geschrieben und führe es über die Konsole mit Python aus.
    Beim Ausführen bekomme ich den Fehler
    Traceback (most recent call last):
    File „C:\Users\…\PythonDownloadbot.py“, line 34, in
    with open(filename, ‚wb‘) as out_file:
    PermissionError: [Errno 13] Permission denied: ‚AgACAgIAAxkBAAMGYatA..usw.jpg‘
    Muss ich in Windows etwas am Script bzw. an der Dateinamenbezeichnung ändern, damit es funktioniert?
    Gruß,
    Joachim

  12. Hosenträger

    Hey hast du eine Idee wie man auch wenn du kein Fan von WhatsApp bist einen bot der über WhatsApp Nachrichten verschickt?

    1. Thomas

      Ich glaub bei Whatsapp ist dad nicht gewünscht und geht deshalb nicht so einfach…

Schreibe einen Kommentar

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

Time limit is exhausted. Please reload CAPTCHA.