Oggi parleremo di come creare un bot per Telegram che risponderà in automatico a dei messaggi secondo dei parametri.
Per creare un bot Telegram in Python avrete bisogno di un token che si può avere da Botfather (lo trovate scrivendo il nick sulla barra di ricerca di Telegram).
Dopo aver cliccato avvia digitate il comando "/newbot" in seguito dategli un nome e nick. Fatto questo Botfather genera in automatico il token specifico per il bot appena creato.
Successivamente per comandare questo bot abbiamo bisogno di una particolare libreria che si può installare da terminale con questo comando:
pip install python-telegram-bot
In seguito apriamo l'IDE per programmare in Python, esempio Visual Studio Code PyCharm ecc...
Ecco una logica di esempio:
from random import choice
from glob import glob
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
TOKEN = "serie di numeri generati in precedenza"
def start(update, context):
update.message.reply_text("Ciao!")
def rispondi(update, context):
testo = update.message.text.lower()
if "dove sei" in testo:
update.message.reply_venue(coordinate) # Dovresti specificare le coordinate corrette
elif "contatto" in testo:
update.message.reply_contact("ehackerforum@gmail.com", "EHF")
elif "hai foto?" in testo:
immagine = choice(glob("logo_EHF/*.png"))
update.message.reply_photo(open(immagine, 'rb'))
else:
update.message.reply_text("Devo andare!")
updater = Updater(TOKEN)
updater.dispatcher.add_handler(CommandHandler('start', start))
updater.dispatcher.add_handler(MessageHandler(Filters.text, rispondi))
print("Bot in ascolto...")
updater.start_polling()
Appena dopo aver aggiunto le librerie necessarie per il corretto funzionamento del bot si definisce subito una funzione TOKEN (generato in precedenza).
Poi vengono create le funzioni start e rispondi. In particolare START viene chiamato quando una persona avvia il bot "/start" e risponde con "Ciao!".
RISPONDI invece quando l'utente invia un messaggio di testo al bot.
Su rispondi viene estratto il testo del messaggio e convertito in minuscolo per semplificare la lettura.
Viene poi creato Updater che passa il token di accesso del bot in modo da gestire le interazioni con l'API di Telegram.
Importante aggiungere i gestori di comandi al dispatcher dell'Updater. Quindi il gestore start viene collegato al comando '/start' e il gestore rispondi viene collegato a tutti i messaggi di testo.
Infine viene avviato il polling del bot con updater.start_polling() che avvia il ciclo di ascolto dei messaggi in entrata.
Il funzionanento del bot è molto semplice se un utente scrive "dove sei" il bot risponderà con una venue con le coordinate. Se il messaggio ha la parola "contatto" risponderà con un contatto dando in questo caso indirizzo email e un nome. Se il testo contiene "hai foto?" invierà una foto casuale tra quelle presenti nella cartella "logo_EHF". Se il messaggio non corrisponde a questi parametri il bot risponderà con il messaggio "Devo andare!".