2015-10-07 08:31:26 +00:00
# -*- coding: utf-8 -*-
2015-10-03 13:34:51 +00:00
import requests
2015-10-03 16:34:38 +00:00
import filemanager
2015-10-08 15:23:24 +00:00
import time
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
2015-11-08 17:14:43 +00:00
def getMe ( ) :
""" Visualizza dati sul bot. """
#Manda la richiesta
data = requests . get ( " https://api.telegram.org/bot " + telegramtoken + " /getMe " )
return data
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. """
while ( True ) :
2015-10-08 15:23:24 +00:00
parametri = {
' offset ' : filemanager . readFile ( " lastid.txt " ) , #Update ID del messaggio da leggere
' limit ' : 1 , #Numero di messaggi da ricevere alla volta, lasciare 1
2015-11-08 17:08:51 +00:00
' timeout ' : 1500 , #Secondi da mantenere attiva la richiesta se non c'e' nessun messaggio
2015-10-08 15:23:24 +00:00
}
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 ) :
2015-11-08 17:08:51 +00:00
if ( data [ ' result ' ] != [ ] ) :
2015-10-03 16:44:23 +00:00
filemanager . writeFile ( " lastid.txt " , str ( data [ ' result ' ] [ 0 ] [ ' update_id ' ] + 1 ) )
2015-11-08 17:08:51 +00:00
#Controlla che la risposta sia effettivamente un messaggio e non una notifica di servizio (tiziocaio si è unito alla chat)
2015-10-03 16:44:23 +00:00
if ( ' message ' in data [ ' result ' ] [ 0 ] ) :
2015-11-08 17:08:51 +00:00
return data [ ' result ' ] [ 0 ] [ ' message ' ]
2015-10-08 15:23:24 +00:00
time . sleep ( 5 )
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 = {
' 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-11-15 15:03:20 +00:00
def sendPhoto ( pic , text , to ) :
""" Manda una foto compressa a una chat. """
parametri = {
' chat_id ' : to ,
' photo ' : pic ,
' caption ' : text ,
}
#Manda la richiesta ai server di Telegram.
requests . get ( " https://api.telegram.org/bot " + telegramtoken + " /sendPhoto " , params = parametri )
2015-10-07 08:31:26 +00:00
def sendAudio ( aud , to ) :
""" Manda un file audio .mp3 a una chat. """
parametri = {
' chat_id ' : to ,
' audio ' : aud ,
}
#Manda la richiesta ai server di Telegram.
requests . get ( " https://api.telegram.org/bot " + telegramtoken + " /sendAudio " , params = parametri )
2015-10-06 16:33:41 +00:00
def sendDocument ( doc , to ) :
2015-10-07 08:31:26 +00:00
""" Manda un file a una chat. """
2015-10-06 16:17:36 +00:00
parametri = {
' chat_id ' : to ,
2015-10-06 16:33:41 +00:00
' document ' : doc ,
2015-10-06 16:17:36 +00:00
}
#Manda la richiesta ai server di Telegram.
2015-10-06 16:33:41 +00:00
requests . get ( " https://api.telegram.org/bot " + telegramtoken + " /sendDocument " , params = parametri )
2015-10-06 16:17:36 +00:00
2015-10-07 08:31:26 +00:00
def sendSticker ( stk , to ) :
""" Manda uno sticker a una chat. """
parametri = {
' chat_id ' : to ,
' sticker ' : stk ,
}
#Manda la richiesta ai server di Telegram.
requests . get ( " https://api.telegram.org/bot " + telegramtoken + " /sendSticker " , params = parametri )
def sendVideo ( vid , to ) :
""" Manda un video .mp4 a una chat. """
parametri = {
' chat_id ' : to ,
' video ' : vid ,
}
#Manda la richiesta ai server di Telegram.
requests . get ( " https://api.telegram.org/bot " + telegramtoken + " /sendVideo " , params = parametri )
def sendVoice ( aud , to ) :
""" Manda un file audio .ogg con OPUS a una chat. """
parametri = {
' chat_id ' : to ,
' voice ' : aud ,
}
#Manda la richiesta ai server di Telegram.
requests . get ( " https://api.telegram.org/bot " + telegramtoken + " /sendVoice " , 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.
2015-11-15 15:03:20 +00:00
requests . get ( " https://api.telegram.org/bot " + telegramtoken + " /sendChatAction " , params = parametri )