Telegram BotFather


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.


Leave a Reply