2015-10-03 13:34:51 +00:00
# -*- coding: utf-8 -*-
import requests
2015-10-03 16:34:38 +00:00
import filemanager
2015-10-03 13:34:51 +00:00
##Per far funzionare questa libreria serve un file "lastid.txt" contenente l'update ID dell'ultimo messaggio non letto e un file "telegramapi.txt" contenente il token di accesso del bot assegnato da @BotFather.
2015-10-03 16:41:34 +00:00
telegramtoken = filemanager . readFile ( ' telegramapi.txt ' )
2015-10-03 13:34:51 +00:00
def getUpdates ( ) :
""" Ricevi gli ultimi aggiornamenti dal server di Telegram e restituisci l ' ultimo messaggio non letto. """
parametri = {
2015-10-03 16:41:34 +00:00
' offset ' : filemanager . readFile ( " lastid.txt " ) , #Update ID del messaggio da leggere
2015-10-03 13:34:51 +00:00
' limit ' : 1 , #Numero di messaggi da ricevere alla volta, lasciare 1
2015-10-04 17:48:45 +00:00
' timeout ' : 300 , #Secondi da mantenere attiva la richiesta se non c'e' nessun messaggio
2015-10-03 13:34:51 +00:00
}
while ( True ) :
2015-10-03 16:41:34 +00:00
data = requests . get ( " https://api.telegram.org/bot " + telegramtoken + " /getUpdates " , params = parametri ) . json ( )
2015-10-03 13:34:51 +00:00
if ( data [ ' ok ' ] == True ) :
if ( data [ ' result ' ] != [ ] ) :
2015-10-03 16:44:23 +00:00
filemanager . writeFile ( " lastid.txt " , str ( data [ ' result ' ] [ 0 ] [ ' update_id ' ] + 1 ) )
2015-10-03 13:34:51 +00:00
#sporco hack per non far crashare il bot ogni 10 secondi; prima o poi capirò il senso di certe risposte nell'api di telegram
2015-10-03 16:44:23 +00:00
if ( ' message ' in data [ ' result ' ] [ 0 ] ) :
if ( ' text ' in data [ ' result ' ] [ 0 ] [ ' message ' ] ) :
2015-10-03 15:40:39 +00:00
return data [ ' result ' ] [ 0 ] [ ' message ' ]
2015-10-03 15:53:33 +00:00
2015-10-03 21:36:05 +00:00
def sendMessage ( content , to ) :
2015-10-03 15:53:33 +00:00
""" Manda un messaggio a una chat. """
#Parametri del messaggio
parametri = {
' chat_id ' : to , #L'ID della chat a cui mandare il messaggio, Royal Games: -2141322
' text ' : content , #Il messaggio da mandare
' parse_mode ' : ' Markdown ' , #Formattare il messaggio?
}
#Manda il messaggio
2015-10-03 21:36:05 +00:00
requests . get ( " https://api.telegram.org/bot " + telegramtoken + " /sendMessage " , params = parametri )
2015-10-03 15:53:33 +00:00
2015-10-03 16:48:05 +00:00
def forwardMessage ( msg , sentby , to ) :
2015-10-03 15:53:33 +00:00
""" Inoltra un messaggio mandato in un ' altra chat. """
#Parametri del messaggio
parametri = {
' chat_id ' : to ,
' from_chat_id ' : sentby ,
' message_id ' : msg ,
}
#Manda la richiesta ai server di Telegram.
requests . get ( " https://api.telegram.org/bot " + telegramtoken + " /forwardMessage " , params = parametri )
2015-10-03 16:48:05 +00:00
def sendLocation ( lat , long , to ) :
2015-10-03 15:53:33 +00:00
""" Manda una posizione sulla mappa. """
#Parametri del messaggio
parametri = {
' chat_id ' : to ,
' latitude ' : lat ,
' longitude ' : long ,
}
#Manda la richiesta ai server di Telegram.
requests . get ( " https://api.telegram.org/bot " + telegramtoken + " /sendLocation " , params = parametri )
2015-10-03 16:48:05 +00:00
def sendChatAction ( to , type = ' typing ' ) :
2015-10-03 15:40:39 +00:00
""" Visualizza lo stato " sta scrivendo " del bot. """
#Parametri del messaggio
parametri = {
' chat_id ' : to ,
' action ' : type ,
}
#Manda la richiesta ai server di Telegram.
requests . get ( " https://api.telegram.org/bot " + telegramtoken + " /sendChatAction " , params = parametri )