Telegram API mit Powershell nutzen

Telegram bietet eine sehr schöne und einfache API an, ich gehe hier kurz darauf ein wie man diese sehr einfach mit Powershell nutzten kann.

  1. Telegram App installieren und ein Konto machen. AndroidWindowsPhoneiOS
  2. Ein Chat mit dem User BotFather erstellen.
    BotFather
  3. Es erscheint eine Anleitung, dieses ist wirklich sehr einfach zu befolgen. Anleitung
  4. Wir erhalten nun einen ApiKey in der Form: 888888888:ABCABCABCABCABCABCABCABCABC

Damit wir uns nun eine Nachricht senden können, müssen wir zunächst die chatId erfahren. Dazu müssen wir mir unserem User dem neuangelegten Bot eine Nachricht senden.

Nun rufen wir mit Powershell die Telegram ab um die chatId zu erfahren:

(Invoke-WebRequest -Uri 'https://api.telegram.org/bot888888888:ABCABCABCABCABCABCABCABCABC/getUpdates').Content 

Der Rückgabewert sieht dann wie folgt aus: (Deine Ausgabe wir unformatiert sein)

{
   "ok": true,
   "result": [
      {
         "update_id": 888888888,
         "message": {
            "message_id": 2,
            "from": {
               "id": 11111111,
               "first_name": "Martin",
               "last_name": "P"
            },
            "chat": {
               "id": 11111111,
               "first_name": "Martin",
               "last_name": "P",
               "type": "private"
            },
            "date": 888888888,
            "text": "Hallo"
         }
      }
   ]
}

"id": 11111111 ist die gesuchte chatId, mit dieser können wir uns nun eine Nachricht senden.

Invoke-WebRequest -Uri 'https://api.telegram.org/bot888888888:ABCABCABCABCABCABCABCABCABC/sendMessage?chat_id=11111111&text=Hello'

Jetzt sollte dein Handy eine Nachricht von deinem Bot mit dem Inhalt Hello erhalten.

Fazit

Mit einem einfachen WebRequest kann man einer Person oder sogar einer Gruppe Nachrichten senden. Anstatt dem mächtigen Powershell kann man auch einfach curlwget oder sogar den Browser verwenden.

Ein paar hilfreiche Snipplets

ChatId direkt abfragen

$api = '888888888:ABCABCABCABCABCABCABCABCABC'

$restResponse = Invoke-RestMethod -Uri ('https://api.telegram.org/bot{0}/getUpdates' -f $api)
$restResponse.result.message.chat.id

Nachricht senden

$api = '888888888:ABCABCABCABCABCABCABCABCABC'
$chatId = '11111111'
$msg = 'Hello'


$restResponse = Invoke-RestMethod -Uri ('https://api.telegram.org/bot{0}/sendMessage?chat_id={1}&text={2}' -f $api, $chatId, $msg)
$restResponse.ok # Tru