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)