1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 19:44:20 +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

29
bot.py
View file

@ -9,41 +9,41 @@ 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'):
if len(rage) <= 0: if len(rage) <= 0:
# Elenco degli audio disponibili # Elenco degli audio disponibili
@ -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."""
file = open(name, 'r')
content = file.read()
file.close()
return content
def writeFile(name, content): def readfile(name):
"""Scrivi qualcosa su un file, sovrascrivendo qualsiasi cosa ci sia al suo interno.""" """Leggi i contenuti di un file.
file = open(name, 'w') :param name: Nome del file
file.write(content) """
file.close() file = open(name, 'r')
content = file.read()
file.close()
return content
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.write(content)
file.close()

122
steam.py
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 = { """
'key': steamtoken, # Parametri della richiesta
'steamids': steamid, parametri = {
} 'key': steamtoken,
#Manda la richiesta ai server di Steam. 'steamids': steamid,
r = requests.get("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/", params=parametri).json() }
return r['response']['players'][0] # Manda la richiesta ai server di Steam.
r = requests.get("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/", params=parametri).json()
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 = { """
'key': steamtoken, # Parametri della richiesta
'appid': appid, parametri = {
} 'key': steamtoken,
#Manda la richiesta ai server di Steam. 'appid': appid,
r = requests.get("http://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v0001/", params=parametri).json() }
if('player_count' in r['response']): # Manda la richiesta ai server di Steam.
return r['response']['player_count'] r = requests.get("http://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v0001/",
else: params=parametri).json()
return None if 'player_count' in r['response']:
return r['response']['player_count']
else:
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
parametri = { :param steamid: SteamID 32 del giocatore
'key': steamtoken, """
'steamid': steamid, # Parametri della richiesta
'appid': appid, parametri = {
'l': 'IT' #Mettendo questo vengono in inglese...? What. 'key': steamtoken,
} 'steamid': steamid,
#Manda la richiesta ai server di Steam. 'appid': appid,
r = requests.get("http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/", params=parametri).json() 'l': 'IT' # Mettendo questo vengono in inglese...? What.
return r['playerstats'] }
# Manda la richiesta ai server di Steam.
r = requests.get("http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/",
params=parametri).json()
return r['playerstats']
def getSteamLevel(steamid): def getSteamLevel(steamid):
"""Ottieni il livello del profilo di Steam.""" """Ottieni il livello del profilo di Steam.
parametri = { :param steamid: SteamID 32 del giocatore
'key': steamtoken, """
'steamid': steamid, parametri = {
} 'key': steamtoken,
#Manda la richiesta ai server di Steam. 'steamid': steamid,
r = requests.get("http://api.steampowered.com/IPlayerService/GetSteamLevel/v0001/", params=parametri).json() }
return r['response']['player_level'] # Manda la richiesta ai server di Steam.
r = requests.get("http://api.steampowered.com/IPlayerService/GetSteamLevel/v0001/", params=parametri).json()
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.
parametri = { Ah, Steam vuole sapere l'ID del gioco a cui sta giocando, quindi mettetecelo.
'key': steamtoken, :param appid: ID dell'applicazione
'steamid': steamid, :param steamid: SteamID 32 del giocatore"""
'appid_playing': appid, parametri = {
} 'key': steamtoken,
#Manda la richiesta ai server di Steam. 'steamid': steamid,
r = requests.get("http://api.steampowered.com/IPlayerService/IsPlayingSharedGame/v0001/", params=parametri).json() 'appid_playing': appid,
return r #Non posso provare il comando; cambiare quando possibile? }
# Manda la richiesta ai server di Steam.
r = requests.get("http://api.steampowered.com/IPlayerService/IsPlayingSharedGame/v0001/", params=parametri).json()
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():
"""Visualizza dati sul bot."""
#Manda la richiesta
data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getMe")
return data
def getUpdates(): def getme():
"""Ricevi gli ultimi aggiornamenti dal server di Telegram e restituisci l'ultimo messaggio non letto.""" """Visualizza dati sul bot."""
while(True): # Manda la richiesta
parametri = { data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getMe")
'offset': filemanager.readFile("lastid.txt"), #Update ID del messaggio da leggere return data
'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
}
data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getUpdates", params=parametri).json()
if(data['ok'] == True):
if (data['result'] != []):
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)
if('message' in data['result'][0]):
return data['result'][0]['message']
time.sleep(5)
def sendMessage(content, to):
"""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
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendMessage", params=parametri)
def forwardMessage(msg, sentby, to):
"""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)
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)
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)
def sendDocument(doc, to):
"""Manda un file a una chat."""
parametri = {
'chat_id': to,
'document': doc,
}
#Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendDocument", params=parametri)
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)
def sendLocation(lat, long, to): def getupdates():
"""Manda una posizione sulla mappa.""" """Ricevi gli ultimi aggiornamenti dal server di Telegram e restituisci l'ultimo messaggio non letto."""
#Parametri del messaggio while True:
parametri = { parametri = {
'chat_id': to, 'offset': filemanager.readfile("lastid.txt"), # Update ID del messaggio da leggere
'latitude': lat, 'limit': 1, # Numero di messaggi da ricevere alla volta, lasciare 1
'longitude': long, 'timeout': 1500, # Secondi da mantenere attiva la richiesta se non c'e' nessun messaggio
} }
#Manda la richiesta ai server di Telegram. data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getUpdates", params=parametri).json()
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendLocation", params=parametri) if data['ok']:
if data['result']:
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
if 'message' in data['result'][0]:
return data['result'][0]['message']
time.sleep(5)
def sendChatAction(to, type='typing'):
"""Visualizza lo stato "sta scrivendo" del bot.""" def sendmessage(content, to):
#Parametri del messaggio """Manda un messaggio a una chat.
parametri = { :param content: Testo del messaggio
'chat_id': to, :param to: Destinatario del messaggio
'action': type, """
} # Parametri del messaggio
#Manda la richiesta ai server di Telegram. parametri = {
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendChatAction", params=parametri) 'chat_id': to,
'text': content,
'parse_mode': 'Markdown', # Formattare il messaggio?
}
# Manda il messaggio
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendMessage", params=parametri)
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 = {
'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)
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 = {
'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)
def sendaudio(aud, to):
"""Manda un file audio .mp3 a una chat.
:param aud: ID del file audio
:param to: Destinatario dell'audio
"""
parametri = {
'chat_id': to,
'audio': aud,
}
# Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendAudio", params=parametri)
def senddocument(doc, to):
"""Manda un file a una chat.
:param doc: ID del documento
:param to: Destinatario del documento
"""
parametri = {
'chat_id': to,
'document': doc,
}
# Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendDocument", params=parametri)
def sendsticker(stk, to):
"""Manda uno sticker a una chat.
:param stk: ID dello sticker
:param to: Destinatario dello sticker
"""
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.
:param vid: ID del video
:param to: Destinatario del video
"""
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 come se fosse un messaggio vocale.
:param aud: ID dell'audio
:param to: Destinatario dell'audio
"""
parametri = {
'chat_id': to,
'voice': aud,
}
# Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendVoice", params=parametri)
def sendlocation(lat, long, to):
"""Manda una posizione sulla mappa.
:param lat: Latitudine
:param long: Longitudine
:param to: Destinatario della posizione
"""
# 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)
def sendchataction(to, type='typing'):
"""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 = {
'chat_id': to,
'action': type,
}
# Manda la richiesta ai server di Telegram.
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendChatAction", params=parametri)