Spesso si vuole che programmi o script implementati per automatizzare processi , controlli e molto altro ci inviino in maniera autonoma e proattiva delle comuinicazioni… del tipo “sto ancora finzionando! Tranquillo!” oppure “… ho appena scoperto che quella cosa NON FUNZIONA piu’!”
Per fare questo si puo’ usare telegram. i passi sono questi:
cerca la chat con BotFather che e’ il “padrino di telegram” e chiedigli di creare un bot (un canale di comunicazione attraverso cui il tuo programma coimunichera’ con te).
Per fare queto scrivigli il comando “/newbot” e dopo una serie di domande lui, da bravo Padrino, creera’ il tuo bot!
Ti comunichera’ anche un <TOKEN> di accesso per scrivere sul canale.
Solitamente il bot (o meglio il programma) risponde se interrogato. Se si vuole che lui (il programma) invii messaggi in modo proattivo bisogna conoscere un’altro parametro che e’ il “chat_id” e lo si puo’ conoiscere visitando questa pagina:
https://api.telegram.org/bot<TOKEN>/getUpdates
dove al posto di <TOKEN> va inserito il <TOKEN> prima fornito da BotFather.
L’identificativo della chat sara nella risposta:
- result: [{message: {from: {chat: {id: 23423424234, …..
Un po’ di codice:
Messaggi Proattivi
import requests
def telegram_bot_sendtext(bot_message):
bot_token = '<TOKEN>';
bot_chatID = '<chatID>';
send_text = 'https://api.telegram.org/bot' + bot_token + '/sendMessage?chat_id=' + bot_chatID + '&parse_mode=Markdown&text=' + bot_message;
response = requests.get(send_text);
return response.json();
test = telegram_bot_sendtext("salutat vos servo tuo!");
print(test)
Messaggi su interrogazione:
import telepot
def on_chat_message(msg):
content_type, chat_type, chat_id = telepot.glance(msg)
if content_type == 'text':
bot.sendMessage(chat_id, 'ciao, sono un bot molto stupido!')
TOKEN = '<TOKEN>'
bot = telepot.Bot(TOKEN)
bot.message_loop(on_chat_message)
print('Listening ...')
import time
while 1:
time.sleep(10)
Messaggi regolari e periodici
import time
import schedule
import requests
def telegram_bot_sendtext(bot_message):
bot_token = '<TOKEN>'
bot_chatID = '<ID_CHAT>'
send_text = 'https://api.telegram.org/bot' + bot_token + '/sendMessage?chat_id=' + bot_chatID + '&parse_mode=Markdown&text=' + bot_message
response = requests.get(send_text)
return response.json()
def report():
my_message = "Voglio salutarti ogni giorno alle 12:00"
telegram_bot_sendtext(my_message)
schedule.every().day.at("12:00").do(report)
while True:
schedule.run_pending()
time.sleep(1)
Non mi dilungo sulla descrizione del codice perche’ il web ne e’ pieno. Qui mi preme solo consigliare la libreria telepot per la sua semplicita’ e come prendere l’identificativo della chat.