1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-27 13:34:28 +00:00
royalnet/royalbot.py

154 lines
5.3 KiB
Python
Raw Normal View History

2015-08-07 16:15:27 +00:00
# -*- coding: utf-8 -*-
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"
#Token di Steam, per /steam
steamtoken = "042E26965C7AA24487FEBA6205017315"
2015-08-07 14:23:26 +00:00
#Ultimo messaggio mandato dal bot.
lastmsg = ""
2015-08-10 18:36:00 +00:00
#Elenco degli steamid e degli username di telegram.
steamids = {
'@Steffo': 76561198034314260,
'@EvilBaluIsEvilT_T': 76561198071012695,
'@Fultz': 76561198035547490,
'@IlGattopardo': 76561198111021344,
'@FrankFrankFrank': 76561198071099951,
'@fedYal': 76561198109189938,
'@ActerRYG': 76561198146704979,
'@YouTouchMyTralala': 76561198121094516,
'@Heisenberg_TheMadDoctor': 76561198080377213,
'@SuperMattemb': 76561198115852550,
'@Peraemela99': 76561198161867082,
'@thevagginadestroyer': 76561198128738388,
'Fillo': 76561198103292029,
'@Cosimo03': 76561198062778224,
'Alby': 76561198071383448,
'@Voltaggio': 76561198147601821,
'Alle2002': 76561198052996311,
'Jummi': 76561198169975999,
'@Tauei': 76561198104305298,
'@Saitorlock': 76561198089120441,
'@iEmax': 76561198149695151,
'@Alleanderl': 76561198154175301,
'@Boni3099': 76561198131868211,
}
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
2015-08-08 11:32:14 +00:00
def sendMessage(content, to, da):
2015-08-07 13:49:13 +00:00
#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
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.
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:
2015-08-08 11:32:14 +00:00
#Manda il messaggio in chat privata
parametri['chat_id'] = da
#Manda il messaggio
r = requests.get("https://api.telegram.org/bot" + token + "/sendMessage", params=parametri)
2015-08-07 13:49:13 +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()
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-08 11:36:07 +00:00
sendMessage("Ah non lo so nemmeno io ¯\_(ツ)_/¯", msg['chat']['id'], msg['from']['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-08 11:36:07 +00:00
sendMessage("Non hai specificato uno SteamID o un username!", msg['chat']['id'], msg['from']['id'])
else:
2015-08-07 16:29:12 +00:00
#Elenco degli steamid e degli username di telegram.
2015-08-10 18:36:00 +00:00
global steamids
2015-08-07 16:29:12 +00:00
#Controlla se la selezione è un username di telegram.
2015-08-07 17:22:57 +00:00
if(msg['text'][7:] in steamids ):
2015-08-07 16:34:15 +00:00
selezione = steamids[msg['text'][7:]]
2015-08-07 16:29:12 +00:00
else:
selezione = msg['text'][7:]
2015-08-07 16:14:26 +00:00
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']
2015-08-08 11:32:14 +00:00
#E' in gioco? Se non c'è nessuna informazione sul gioco, lascia perdere
2015-08-08 10:27:53 +00:00
try:
2015-08-08 10:28:12 +00:00
steam['response']['players'][0]['gameextrainfo']
2015-08-08 10:27:53 +00:00
except KeyError:
2015-08-08 10:21:59 +00:00
ingame = None
2015-08-08 10:27:53 +00:00
else:
ingame = steam['response']['players'][0]['gameextrainfo']
2015-08-08 11:32:14 +00:00
#Stati di Steam
2015-08-07 15:19:03 +00:00
text = ""
if(online == 0):
2015-08-07 17:22:57 +00:00
text = unichr(9898) + " Offline"
2015-08-07 15:19:03 +00:00
elif(online == 1):
2015-08-07 17:29:04 +00:00
text = unichr(55357) + unichr(56629) + " Online"
2015-08-07 15:19:03 +00:00
elif(online == 2):
2015-08-07 17:29:04 +00:00
text = unichr(55357) + unichr(56628) + " Occupato"
2015-08-07 15:19:03 +00:00
elif(online == 3):
2015-08-07 17:22:57 +00:00
text = unichr(9899) + " Assente"
2015-08-07 15:19:03 +00:00
elif(online == 4):
2015-08-07 17:22:57 +00:00
text = unichr(9899) + " Inattivo"
2015-08-07 15:19:03 +00:00
elif(online == 5):
2015-08-07 17:29:04 +00:00
text = unichr(55357) + unichr(56629) + " Disponibile per scambiare"
2015-08-07 15:19:03 +00:00
elif(online == 6):
2015-08-07 17:29:04 +00:00
text = unichr(55357) + unichr(56629) + " Disponibile per giocare"
2015-08-08 10:27:53 +00:00
if ingame is not None:
2015-08-08 11:32:14 +00:00
sendMessage(name + " sta giocando a " + unichr(55357) + unichr(56628) + " " + ingame + ".", msg['chat']['id'], msg['from']['id'])
2015-08-08 10:15:08 +00:00
else:
2015-08-08 11:32:14 +00:00
sendMessage(name + " e' " + text + ".", msg['chat']['id'], msg['from']['id'])
2015-08-07 15:22:47 +00:00
else:
2015-08-08 11:32:14 +00:00
sendMessage("Lo SteamID o l'username non esiste!", msg['chat']['id'], msg['from']['id'])