Ga naar de inhoud
Home » Telegram Bot maken

Telegram Bot maken

Open Telegram app en zoek de Bothfather op

  • Type /newbot om een nieuwe bot te maken
  • Geef de bot een naam (bijvoorbeeld Pi-hole) en een user naam die eindigd op _bot (bijvoorbeeld piholevpn_bot)
  • Je krijgt nu een HTTP API token, noteer deze!

Nu op zoek naar het ChatID (van diegene waar het bericht naar toe moet … ik dus). Zoek in telegram naar de gebruiker RawDataBot en klik op Start om een chat te starten. RawDataBot verteld je nu wat je voornaam, achternaam, gebruikersnaam en … Chat ID is

Ben je meer van de (python) scriptjes … voer dan het volgende script uit:

import requests
TOKEN = "HET TELEGRAM BOT TOKEN"
url = f"https://api.telegram.org/bot{TOKEN}/getUpdates"
print(requests.get(url).json())

Voer dit uit, het kan zijn dat je nog geen data terug krijgt:

({'ok': True, 'result': []})

Kopje koffie en dan nog eens proberen, lukt het, dan krijg je iets a la

{'ok': True, 'result': [{'update_id': 691391100, 'message': {'message_id': 1, 'from':
{'id': 4416611290, 'is_bot': False, 'first_name': 'Arjan', 'last_name': 'ten Hoopen',
'username': 'ArjanTenHoopen', 'language_code': 'nl'}, 'chat': {'id': 1112219200,
'first_name': 'Arjan', 'last_name': 'ten Hoopen', 'username': 'ArjanTenHoopen',
'type': 'private'}, ......}

De rode moet je hebben (bedenk dit is dummy data LOL)

Voorbeeld scripts

Een voorbeeld van een shell script (telegramsend) waarmee je een bericht of een bestand kun verzenden:

#!/bin/bash 
# 
# Wat is het argument 
#  
ARG="$@" 

# 
# Telegram toeken van de verzender en chat_id van de ontvanger 
#  
TOKEN="8901131359:XYZuZSEiabbajeMC54M313_ACDCClqVREkA" 
CHAT_ID="1117733222" 

# 
# Maak curl silent of niet 
# 
#SILENT="" 
SILENT="--silent" 

# 
# De logfile, makkelijk bij debuggen 
# 
LOGFILE=/dev/null 

# 
# Is het een bestand of een bericht 
# 
if [ -f "${ARG}" ] ; then 
{ 
   # 
   # Het is een bestand 
   # 
   curl ${SILENT} -X POST -H "content-type: multipart/form-data" -F document=@"${ARG}" -F chat_id=${CHAT_ID} https://api.telegram.org/bot${TOKEN}/sendDocument 2>&1 1>${LOGFILE} 
   RC=$? 
} 
else 
{ 
   # 
   # Het is een bericht 
   # 
   curl ${SILENT} -X POST https://api.telegram.org/bot${TOKEN}/sendMessage -d chat_id=${CHAT_ID} -d text="${ARG}" 2>&1 1>${LOGFILE} 
   RC=$? 
} 
fi 

# 
# Is het goed gegaan 
#  
if [ ${RC} -ne 0 ] ; then 
{ 
   echo "Verzenden is mislukt, return code is ${RC}" 
} 
fi 

exit ${RC}

Een voorbeeld script in python:

import requests

TOKEN = "1891839400:ABHDPAPPCuSagCxAJ5-ajth-O6AJgHOO1kN"
CHATID = "6794744213"

#
# Bericht
#
MSG = "Hoi Hoi ik ben er"
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
requests.get(url, params={"chat_id": CHATID, "text" : MSG})

#
# Lokaal bestand
#
FILE = "/tmp/arjan.txt"
url = f"https://api.telegram.org/bot{TOKEN}/sendDocument"
files = {}
files["document"] = open(FILE, "rb")
requests.get(url, params={"chat_id": CHATID}, files=files)

#
# Foto van het internet
#
apiURL = f"https://api.telegram.org/bot{TOKEN}/sendPhoto"
image = "https://media.1815.io/topgear/i/full/2022/06/citroe%CC%88n-ds-rijder-3-4-voor.jpg"
response = requests.post(apiURL, json={'chat_id': CHATID, 'photo': image })

#
# Locale foto
#
FILE="/usr/local/src/pivpn/logos.jpg"
url = f"https://api.telegram.org/bot{TOKEN}/sendPhoto"
files = {}
files["photo"] = open(FILE, "rb")
requests.get(url, params={"chat_id": CHATID}, files=files)

 

Naslag: https://core.telegram.org/bots/api