2015-08-07 16:14:26 +00:00
|
|
|
|
# -*- coding: latin-1 -*-
|
2015-08-07 13:49:13 +00:00
|
|
|
|
|
|
|
|
|
import requests #Modulo per fare richieste su HTTP
|
|
|
|
|
import time #Modulo per mettere in pausa il programma
|
|
|
|
|
|
|
|
|
|
#Token del bot, non diffondere
|
|
|
|
|
token = "120621161:AAHeVgQhlfGx36KT9NyGemauZBPEbe9Xfv0"
|
|
|
|
|
|
2015-08-07 14:52:42 +00:00
|
|
|
|
#Token di Steam, per /steam
|
|
|
|
|
steamtoken = "042E26965C7AA24487FEBA6205017315"
|
|
|
|
|
|
2015-08-07 14:23:26 +00:00
|
|
|
|
#Ultimo messaggio mandato dal bot.
|
|
|
|
|
lastmsg = ""
|
|
|
|
|
|
2015-08-07 13:49:13 +00:00
|
|
|
|
#Leggi un file e rispondi con il contenuto
|
|
|
|
|
def readFile(name):
|
|
|
|
|
file = open(name, 'r')
|
|
|
|
|
content = file.read()
|
|
|
|
|
file.close()
|
|
|
|
|
return content
|
|
|
|
|
|
|
|
|
|
#Scrivi qualcosa su un file
|
|
|
|
|
def writeFile(name, content):
|
|
|
|
|
file = open(name, 'w')
|
|
|
|
|
file.write(content)
|
|
|
|
|
file.close()
|
|
|
|
|
|
|
|
|
|
#Ricevi gli ultimi messaggi
|
|
|
|
|
def getUpdates():
|
|
|
|
|
#Parametri della richiesta da fare
|
|
|
|
|
parametri = {
|
|
|
|
|
'offset': readFile("lastid.txt"), #Update ID del messaggio da leggere
|
|
|
|
|
'limit': 1, #Numero di messaggi da ricevere alla volta, lasciare 1
|
|
|
|
|
'timeout': 300, #Secondi da mantenere attiva la richiesta se non c'e' nessun messaggio
|
|
|
|
|
}
|
|
|
|
|
#Manda la richiesta ai server di Telegram e convertila in un dizionario
|
|
|
|
|
r = requests.get("https://api.telegram.org/bot" + token + "/getUpdates", params=parametri).json()
|
|
|
|
|
return r
|
|
|
|
|
|
|
|
|
|
#Manda un messaggio
|
|
|
|
|
def sendMessage(content, to):
|
|
|
|
|
#Parametri del messaggio
|
|
|
|
|
parametri = {
|
|
|
|
|
'chat_id': to, #L'ID della chat a cui mandare il messaggio, Royal Games: -2141322
|
2015-08-07 14:52:42 +00:00
|
|
|
|
'text': content, #Il messaggio da mandare
|
2015-08-07 13:49:13 +00:00
|
|
|
|
}
|
2015-08-07 14:23:26 +00:00
|
|
|
|
#Antispam: manda il messaggio solo se l'ultimo messaggio è diverso da quello che deve mandare ora.
|
2015-08-07 14:28:37 +00:00
|
|
|
|
global lastmsg
|
2015-08-07 14:23:26 +00:00
|
|
|
|
if(lastmsg != content):
|
|
|
|
|
#Manda il messaggio
|
|
|
|
|
r = requests.get("https://api.telegram.org/bot" + token + "/sendMessage", params=parametri)
|
|
|
|
|
lastmsg = content
|
|
|
|
|
else:
|
|
|
|
|
print("Tentativo di spam rilevato.")
|
2015-08-07 13:49:13 +00:00
|
|
|
|
|
2015-08-07 14:52:42 +00:00
|
|
|
|
def getSteamStatus(steamid):
|
|
|
|
|
#Parametri della richiesta
|
|
|
|
|
parametri = {
|
|
|
|
|
'key': steamtoken,
|
|
|
|
|
'steamids': steamid,
|
|
|
|
|
}
|
|
|
|
|
#Manda la richiesta ai server di Telegram e convertila in un dizionario
|
2015-08-07 15:28:28 +00:00
|
|
|
|
r = requests.get("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/", params=parametri).json()
|
2015-08-07 14:52:42 +00:00
|
|
|
|
return r
|
|
|
|
|
|
2015-08-07 13:49:13 +00:00
|
|
|
|
#Il loop del bot
|
|
|
|
|
while(True):
|
|
|
|
|
#Ricevi gli ultimi messaggi
|
|
|
|
|
data = getUpdates()
|
|
|
|
|
#Se c'e' un nuovo messaggio
|
|
|
|
|
if(data['ok'] and data['result']):
|
|
|
|
|
#Aggiorna l'update ID sul file
|
|
|
|
|
writeFile("lastid.txt", str(data['result'][0]['update_id'] + 1))
|
|
|
|
|
#Leggi i dati del messaggio
|
|
|
|
|
msg = data['result'][0]['message']
|
2015-08-07 16:14:26 +00:00
|
|
|
|
#Ah, non lo so io!
|
2015-08-07 15:58:53 +00:00
|
|
|
|
if(msg['text'].startswith("/ahnonlosoio")):
|
2015-08-07 14:52:42 +00:00
|
|
|
|
sendMessage("Ah non lo so nemmeno io ¯\_(ツ)_/¯", msg['chat']['id'])
|
2015-08-07 16:14:26 +00:00
|
|
|
|
#Controlla lo stato di una persona su Steam.
|
2015-08-07 15:02:47 +00:00
|
|
|
|
if(msg['text'].startswith("/steam")):
|
2015-08-07 16:14:26 +00:00
|
|
|
|
#Se non viene specificato un
|
2015-08-07 15:01:17 +00:00
|
|
|
|
if(msg['text'] == "/steam"):
|
2015-08-07 16:14:26 +00:00
|
|
|
|
sendMessage("⚠️ Non hai specificato uno steamid!", msg['chat']['id'])
|
2015-08-07 14:52:42 +00:00
|
|
|
|
else:
|
2015-08-07 16:14:26 +00:00
|
|
|
|
#Controlla se la selezione è un tag di telegram.
|
|
|
|
|
if(msg['text'][7:] = "@Steffo"):
|
|
|
|
|
selezione = 76561198034314260
|
|
|
|
|
elif(msg['text'][7:] = "@FrankFrankFrank"):
|
|
|
|
|
selezione = 76561198071099951
|
|
|
|
|
steam = getSteamStatus(selezione)
|
2015-08-07 15:19:03 +00:00
|
|
|
|
if(steam['response']['players']):
|
|
|
|
|
online = steam['response']['players'][0]['personastate']
|
|
|
|
|
name = steam['response']['players'][0]['personaname']
|
|
|
|
|
text = ""
|
|
|
|
|
if(online == 0):
|
|
|
|
|
text = "Offline"
|
|
|
|
|
elif(online == 1):
|
|
|
|
|
text = "Online"
|
|
|
|
|
elif(online == 2):
|
|
|
|
|
text = "Occupato"
|
|
|
|
|
elif(online == 3):
|
|
|
|
|
text = "Assente"
|
|
|
|
|
elif(online == 4):
|
|
|
|
|
text = "Inattivo"
|
|
|
|
|
elif(online == 5):
|
|
|
|
|
text = "Disponibile per scambiare"
|
|
|
|
|
elif(online == 6):
|
|
|
|
|
text = "Disponibile per giocare"
|
2015-08-07 15:28:28 +00:00
|
|
|
|
sendMessage(name + " e' " + text + ".", msg['chat']['id'])
|
2015-08-07 15:22:47 +00:00
|
|
|
|
else:
|
|
|
|
|
sendMessage("Lo steamid non esiste!", msg['chat']['id'])
|