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

/sbaaaaaaam

This commit is contained in:
Steffo 2015-11-15 16:58:07 +01:00
parent cd6f020225
commit cab7323e82
4 changed files with 270 additions and 196 deletions

25
bot.py
View file

@ -9,39 +9,39 @@ rage = []
print("Bot avviato!") print("Bot avviato!")
while True: while True:
# Guarda il comando ricevuto. # Guarda il comando ricevuto.
msg = telegram.getUpdates() msg = telegram.getupdates()
cmd = msg['text'].split(' ', 1) cmd = msg['text'].split(' ', 1)
sby = msg['chat']['id'] sby = msg['chat']['id']
if cmd[0].startswith('/ahnonlosoio'): if cmd[0].startswith('/ahnonlosoio'):
print(str(sby) + ": /ahnonlosoio") print(str(sby) + ": /ahnonlosoio")
telegram.sendMessage("Ah, non lo so nemmeno io!", sby) telegram.sendmessage("Ah, non lo so nemmeno io!", sby)
elif cmd[0].startswith('/ehoh'): elif cmd[0].startswith('/ehoh'):
print(str(sby) + ": /ehoh") print(str(sby) + ": /ehoh")
telegram.sendMessage("Eh, oh. Sono cose che capitano.", sby) telegram.sendmessage("Eh, oh. Sono cose che capitano.", sby)
elif cmd[0].startswith('/start'): elif cmd[0].startswith('/start'):
print(str(sby) + ": /start") print(str(sby) + ": /start")
telegram.sendMessage('Ascolta, io mi starto quando mi pare. Anzi, quando Steffo ha voglia di aprirmi.', sby) telegram.sendmessage('Ascolta, io mi starto quando mi pare. Anzi, quando Steffo ha voglia di aprirmi.', sby)
elif cmd[0].startswith('/playing'): elif cmd[0].startswith('/playing'):
print(str(sby) + ": /playing") print(str(sby) + ": /playing")
if len(cmd) >= 2: if len(cmd) >= 2:
n = steam.getNumberOfCurrentPlayers(cmd[1]) n = steam.getNumberOfCurrentPlayers(cmd[1])
if n is None: if n is None:
telegram.sendMessage(chr(9888) + " L'app specificata non esiste!", sby) telegram.sendmessage(chr(9888) + " L'app specificata non esiste!", sby)
else: else:
telegram.sendMessage('In questo momento, ' + str(n) + ' persone stanno giocando a [' + cmd[1] + telegram.sendmessage('In questo momento, ' + str(n) + ' persone stanno giocando a [' + cmd[1] +
'](https://steamdb.info/app/' + cmd[1] + '/graphs/)', sby) '](https://steamdb.info/app/' + cmd[1] + '/graphs/)', sby)
else: else:
telegram.sendMessage(chr(9888) + ' Non hai specificato un AppID!\nLa sintassi corretta è /playing <AppID>.', telegram.sendmessage(chr(9888) + ' Non hai specificato un AppID!\nLa sintassi corretta è /playing <AppID>.',
sby) sby)
elif cmd[0].startswith('/saldistim'): elif cmd[0].startswith('/saldistim'):
print(str(sby) + ": /saldistim") print(str(sby) + ": /saldistim")
if (len(cmd) >= 2): if len(cmd) >= 2:
telegram.sendMessage( telegram.sendmessage(
'Ricerca di offerte di ' + 'Ricerca di offerte di ' +
'[' + cmd[1] + '](https://isthereanydeal.com/#/search:' + cmd[1].replace(' ', '%20') + '[' + cmd[1] + '](https://isthereanydeal.com/#/search:' + cmd[1].replace(' ', '%20') +
";/scroll:%23gamelist) completata.", sby) ";/scroll:%23gamelist) completata.", sby)
else: else:
telegram.sendMessage(chr(9888) + telegram.sendmessage(chr(9888) +
' Non hai specificato un gioco!' + ' Non hai specificato un gioco!' +
'[Visualizza tutto](https://isthereanydeal.com/#/search:.;/scroll:%23gamelist).', sby) '[Visualizza tutto](https://isthereanydeal.com/#/search:.;/scroll:%23gamelist).', sby)
elif cmd[0].startswith('/rage'): elif cmd[0].startswith('/rage'):
@ -57,4 +57,7 @@ while True:
random.shuffle(rage) random.shuffle(rage)
ragesend = rage.pop() ragesend = rage.pop()
print(str(sby) + ": /rage " + ragesend) print(str(sby) + ": /rage " + ragesend)
telegram.sendDocument(ragesend, sby) telegram.senddocument(ragesend, sby)
elif cmd[0].startswith('/sbam'):
print(str(sby) + ": /sbam ")
telegram.sendaudio('BQADAgADTQIAAh8GgAGj0jKIrpTgvQI', sby)

View file

@ -1,14 +1,21 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
def readFile(name):
"""Leggi i contenuti di un file.""" def readfile(name):
"""Leggi i contenuti di un file.
:param name: Nome del file
"""
file = open(name, 'r') file = open(name, 'r')
content = file.read() content = file.read()
file.close() file.close()
return content return content
def writeFile(name, content):
"""Scrivi qualcosa su un file, sovrascrivendo qualsiasi cosa ci sia al suo interno.""" def writefile(name, content):
"""Scrivi qualcosa su un file, sovrascrivendo qualsiasi cosa ci sia al suo interno.
:param name: Nome del file
:param content: Contenuto del file
"""
file = open(name, 'w') file = open(name, 'w')
file.write(content) file.write(content)
file.close() file.close()

View file

@ -2,64 +2,84 @@
import requests import requests
import filemanager import filemanager
##Per far funzionare questa libreria serve un file "steamapi.txt" contenente la Steam Api Key ottenibile a http://steamcommunity.com/dev/apikey # Per far funzionare questa libreria serve un file "steamapi.txt" contenente la Steam Api Key ottenibile a
steamtoken = filemanager.readFile('steamapi.txt') # http://steamcommunity.com/dev/apikey
steamtoken = filemanager.readfile('steamapi.txt')
def getPlayerSummaries(steamid): def getPlayerSummaries(steamid):
"""Ottieni i dati del profilo steam del giocatore di cui è stato specificato lo SteamID 32.""" """Ottieni i dati del profilo steam del giocatore di cui è stato specificato lo SteamID 32.
#Parametri della richiesta :param steamid: SteamID 32 del giocatore
"""
# Parametri della richiesta
parametri = { parametri = {
'key': steamtoken, 'key': steamtoken,
'steamids': steamid, 'steamids': steamid,
} }
#Manda la richiesta ai server di Steam. # Manda la richiesta ai server di Steam.
r = requests.get("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/", params=parametri).json() r = requests.get("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/", params=parametri).json()
return r['response']['players'][0] return r['response']['players'][0]
def getNumberOfCurrentPlayers(appid): def getNumberOfCurrentPlayers(appid):
"""Ottieni il numero di giocatori che stanno giocando a un certo gioco.""" """Ottieni il numero di giocatori che stanno giocando a un certo gioco.
#Parametri della richiesta :param appid: ID Steam dell'applicazione
"""
# Parametri della richiesta
parametri = { parametri = {
'key': steamtoken, 'key': steamtoken,
'appid': appid, 'appid': appid,
} }
#Manda la richiesta ai server di Steam. # Manda la richiesta ai server di Steam.
r = requests.get("http://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v0001/", params=parametri).json() r = requests.get("http://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v0001/",
if('player_count' in r['response']): params=parametri).json()
if 'player_count' in r['response']:
return r['response']['player_count'] return r['response']['player_count']
else: else:
return None return None
def getPlayerAchievements(appid, steamid): def getPlayerAchievements(appid, steamid):
"""Ottieni gli achievement del giocatore e del gioco specificato.""" """Ottieni gli achievement del giocatore e del gioco specificato.
#Parametri della richiesta :param appid: ID dell'applicazione
:param steamid: SteamID 32 del giocatore
"""
# Parametri della richiesta
parametri = { parametri = {
'key': steamtoken, 'key': steamtoken,
'steamid': steamid, 'steamid': steamid,
'appid': appid, 'appid': appid,
'l': 'IT' #Mettendo questo vengono in inglese...? What. 'l': 'IT' # Mettendo questo vengono in inglese...? What.
} }
#Manda la richiesta ai server di Steam. # Manda la richiesta ai server di Steam.
r = requests.get("http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/", params=parametri).json() r = requests.get("http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/",
params=parametri).json()
return r['playerstats'] return r['playerstats']
def getSteamLevel(steamid): def getSteamLevel(steamid):
"""Ottieni il livello del profilo di Steam.""" """Ottieni il livello del profilo di Steam.
:param steamid: SteamID 32 del giocatore
"""
parametri = { parametri = {
'key': steamtoken, 'key': steamtoken,
'steamid': steamid, 'steamid': steamid,
} }
#Manda la richiesta ai server di Steam. # Manda la richiesta ai server di Steam.
r = requests.get("http://api.steampowered.com/IPlayerService/GetSteamLevel/v0001/", params=parametri).json() r = requests.get("http://api.steampowered.com/IPlayerService/GetSteamLevel/v0001/", params=parametri).json()
return r['response']['player_level'] return r['response']['player_level']
def isPlayingSharedGame(appid, steamid): def isPlayingSharedGame(appid, steamid):
"""Guarda se il gioco a cui sta giocando qualcuno è condiviso.\nAh, Steam vuole sapere l'ID del gioco a cui sta giocando, quindi mettetecelo.""" """Guarda se il gioco a cui sta giocando qualcuno è condiviso.
Ah, Steam vuole sapere l'ID del gioco a cui sta giocando, quindi mettetecelo.
:param appid: ID dell'applicazione
:param steamid: SteamID 32 del giocatore"""
parametri = { parametri = {
'key': steamtoken, 'key': steamtoken,
'steamid': steamid, 'steamid': steamid,
'appid_playing': appid, 'appid_playing': appid,
} }
#Manda la richiesta ai server di Steam. # Manda la richiesta ai server di Steam.
r = requests.get("http://api.steampowered.com/IPlayerService/IsPlayingSharedGame/v0001/", params=parametri).json() r = requests.get("http://api.steampowered.com/IPlayerService/IsPlayingSharedGame/v0001/", params=parametri).json()
return r #Non posso provare il comando; cambiare quando possibile? return r # Non posso provare il comando; cambiare quando possibile?

View file

@ -3,127 +3,171 @@ import requests
import filemanager import filemanager
import time import time
##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. # Per far funzionare questa libreria serve un file "lastid.txt" contenente l'update ID dell'ultimo messaggio non letto e
telegramtoken = filemanager.readFile('telegramapi.txt') # un file "telegramapi.txt" contenente il token di accesso del bot assegnato da @BotFather.
telegramtoken = filemanager.readfile('telegramapi.txt')
def getMe():
def getme():
"""Visualizza dati sul bot.""" """Visualizza dati sul bot."""
#Manda la richiesta # Manda la richiesta
data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getMe") data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getMe")
return data return data
def getUpdates(): def getupdates():
"""Ricevi gli ultimi aggiornamenti dal server di Telegram e restituisci l'ultimo messaggio non letto.""" """Ricevi gli ultimi aggiornamenti dal server di Telegram e restituisci l'ultimo messaggio non letto."""
while(True): while True:
parametri = { parametri = {
'offset': filemanager.readFile("lastid.txt"), #Update ID del messaggio da leggere 'offset': filemanager.readfile("lastid.txt"), # Update ID del messaggio da leggere
'limit': 1, #Numero di messaggi da ricevere alla volta, lasciare 1 'limit': 1, # Numero di messaggi da ricevere alla volta, lasciare 1
'timeout': 1500, #Secondi da mantenere attiva la richiesta se non c'e' nessun messaggio 'timeout': 1500, # Secondi da mantenere attiva la richiesta se non c'e' nessun messaggio
} }
data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getUpdates", params=parametri).json() data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getUpdates", params=parametri).json()
if(data['ok'] == True): if data['ok']:
if (data['result'] != []): if data['result']:
filemanager.writeFile("lastid.txt", str(data['result'][0]['update_id'] + 1)) filemanager.writefile("lastid.txt", str(data['result'][0]['update_id'] + 1))
#Controlla che la risposta sia effettivamente un messaggio e non una notifica di servizio (tiziocaio si è unito alla chat) # Controlla che la risposta sia effettivamente un messaggio e non una notifica di servizio
if('message' in data['result'][0]): if 'message' in data['result'][0]:
return data['result'][0]['message'] return data['result'][0]['message']
time.sleep(5) time.sleep(5)
def sendMessage(content, to):
"""Manda un messaggio a una chat.""" def sendmessage(content, to):
#Parametri del messaggio """Manda un messaggio a una chat.
:param content: Testo del messaggio
:param to: Destinatario del messaggio
"""
# Parametri del messaggio
parametri = { parametri = {
'chat_id': to, #L'ID della chat a cui mandare il messaggio, Royal Games: -2141322 'chat_id': to,
'text': content, #Il messaggio da mandare 'text': content,
'parse_mode': 'Markdown', #Formattare il messaggio? 'parse_mode': 'Markdown', # Formattare il messaggio?
} }
#Manda il messaggio # Manda il messaggio
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendMessage", params=parametri) requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendMessage", params=parametri)
def forwardMessage(msg, sentby, to):
"""Inoltra un messaggio mandato in un'altra chat.""" def forwardmessage(msg, sentby, to):
"""Inoltra un messaggio mandato in un'altra chat.
:param msg: ID del messaggio
:param sentby: Persona da cui è stato mandato il messaggio
:param to: Destinatario del messaggio inoltrato
"""
parametri = { parametri = {
'chat_id': to, 'chat_id': to,
'from_chat_id': sentby, 'from_chat_id': sentby,
'message_id': msg, 'message_id': msg,
} }
#Manda la richiesta ai server di Telegram. # Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/forwardMessage", params=parametri) requests.get("https://api.telegram.org/bot" + telegramtoken + "/forwardMessage", params=parametri)
def sendPhoto(pic, text, to):
"""Manda una foto compressa a una chat.""" def sendphoto(pic, text, to):
"""Manda una foto compressa a una chat.
:param pic: ID della foto da inviare
:param text: Testo della foto da inviare
:param to: Destinatario della foto
"""
parametri = { parametri = {
'chat_id': to, 'chat_id': to,
'photo': pic, 'photo': pic,
'caption': text, 'caption': text,
} }
#Manda la richiesta ai server di Telegram. # Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendPhoto", params=parametri) requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendPhoto", params=parametri)
def sendAudio(aud, to):
"""Manda un file audio .mp3 a una chat.""" def sendaudio(aud, to):
"""Manda un file audio .mp3 a una chat.
:param aud: ID del file audio
:param to: Destinatario dell'audio
"""
parametri = { parametri = {
'chat_id': to, 'chat_id': to,
'audio': aud, 'audio': aud,
} }
#Manda la richiesta ai server di Telegram. # Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendAudio", params=parametri) requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendAudio", params=parametri)
def sendDocument(doc, to):
"""Manda un file a una chat.""" def senddocument(doc, to):
"""Manda un file a una chat.
:param doc: ID del documento
:param to: Destinatario del documento
"""
parametri = { parametri = {
'chat_id': to, 'chat_id': to,
'document': doc, 'document': doc,
} }
#Manda la richiesta ai server di Telegram. # Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendDocument", params=parametri) requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendDocument", params=parametri)
def sendSticker(stk, to):
"""Manda uno sticker a una chat.""" def sendsticker(stk, to):
"""Manda uno sticker a una chat.
:param stk: ID dello sticker
:param to: Destinatario dello sticker
"""
parametri = { parametri = {
'chat_id': to, 'chat_id': to,
'sticker': stk, 'sticker': stk,
} }
#Manda la richiesta ai server di Telegram. # Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendSticker", params=parametri) requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendSticker", params=parametri)
def sendVideo(vid, to):
"""Manda un video .mp4 a una chat.""" def sendvideo(vid, to):
"""Manda un video .mp4 a una chat.
:param vid: ID del video
:param to: Destinatario del video
"""
parametri = { parametri = {
'chat_id': to, 'chat_id': to,
'video': vid, 'video': vid,
} }
#Manda la richiesta ai server di Telegram. # Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendVideo", params=parametri) 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.""" def sendvoice(aud, to):
"""Manda un file audio .ogg con OPUS a una chat come se fosse un messaggio vocale.
:param aud: ID dell'audio
:param to: Destinatario dell'audio
"""
parametri = { parametri = {
'chat_id': to, 'chat_id': to,
'voice': aud, 'voice': aud,
} }
#Manda la richiesta ai server di Telegram. # Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendVoice", params=parametri) requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendVoice", params=parametri)
def sendLocation(lat, long, to): def sendlocation(lat, long, to):
"""Manda una posizione sulla mappa.""" """Manda una posizione sulla mappa.
#Parametri del messaggio :param lat: Latitudine
:param long: Longitudine
:param to: Destinatario della posizione
"""
# Parametri del messaggio
parametri = { parametri = {
'chat_id': to, 'chat_id': to,
'latitude': lat, 'latitude': lat,
'longitude': long, 'longitude': long,
} }
#Manda la richiesta ai server di Telegram. # Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendLocation", params=parametri) requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendLocation", params=parametri)
def sendChatAction(to, type='typing'):
"""Visualizza lo stato "sta scrivendo" del bot.""" def sendchataction(to, type='typing'):
#Parametri del messaggio """Visualizza lo stato "sta scrivendo" del bot.
:param to: Chat in cui visualizzare lo stato
:param type: Tipo di stato da visualizzare
"""
# Parametri del messaggio
parametri = { parametri = {
'chat_id': to, 'chat_id': to,
'action': type, 'action': type,
} }
#Manda la richiesta ai server di Telegram. # Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendChatAction", params=parametri) requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendChatAction", params=parametri)