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)
