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!")
while True:
# Guarda il comando ricevuto.
msg = telegram.getUpdates()
msg = telegram.getupdates()
cmd = msg['text'].split(' ', 1)
sby = msg['chat']['id']
if cmd[0].startswith('/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'):
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'):
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'):
print(str(sby) + ": /playing")
if len(cmd) >= 2:
n = steam.getNumberOfCurrentPlayers(cmd[1])
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:
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)
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)
elif cmd[0].startswith('/saldistim'):
print(str(sby) + ": /saldistim")
if (len(cmd) >= 2):
telegram.sendMessage(
if len(cmd) >= 2:
telegram.sendmessage(
'Ricerca di offerte di ' +
'[' + cmd[1] + '](https://isthereanydeal.com/#/search:' + cmd[1].replace(' ', '%20') +
";/scroll:%23gamelist) completata.", sby)
else:
telegram.sendMessage(chr(9888) +
' Non hai specificato un gioco!' +
'[Visualizza tutto](https://isthereanydeal.com/#/search:.;/scroll:%23gamelist).', sby)
telegram.sendmessage(chr(9888) +
' Non hai specificato un gioco!' +
'[Visualizza tutto](https://isthereanydeal.com/#/search:.;/scroll:%23gamelist).', sby)
elif cmd[0].startswith('/rage'):
if len(rage) <= 0:
# Elenco degli audio disponibili
@ -57,4 +57,7 @@ while True:
random.shuffle(rage)
ragesend = rage.pop()
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 -*-
def readFile(name):
"""Leggi i contenuti di un file."""
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."""
file = open(name, 'w')
file.write(content)
file.close()
def readfile(name):
"""Leggi i contenuti di un file.
:param name: Nome del file
"""
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 filemanager
##Per far funzionare questa libreria serve un file "steamapi.txt" contenente la Steam Api Key ottenibile a http://steamcommunity.com/dev/apikey
steamtoken = filemanager.readFile('steamapi.txt')
# Per far funzionare questa libreria serve un file "steamapi.txt" contenente la Steam Api Key ottenibile a
# http://steamcommunity.com/dev/apikey
steamtoken = filemanager.readfile('steamapi.txt')
def getPlayerSummaries(steamid):
"""Ottieni i dati del profilo steam del giocatore di cui è stato specificato lo SteamID 32."""
#Parametri della richiesta
parametri = {
'key': steamtoken,
'steamids': steamid,
}
#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]
"""Ottieni i dati del profilo steam del giocatore di cui è stato specificato lo SteamID 32.
:param steamid: SteamID 32 del giocatore
"""
# Parametri della richiesta
parametri = {
'key': steamtoken,
'steamids': steamid,
}
# 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):
"""Ottieni il numero di giocatori che stanno giocando a un certo gioco."""
#Parametri della richiesta
parametri = {
'key': steamtoken,
'appid': appid,
}
#Manda la richiesta ai server di Steam.
r = requests.get("http://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v0001/", params=parametri).json()
if('player_count' in r['response']):
return r['response']['player_count']
else:
return None
"""Ottieni il numero di giocatori che stanno giocando a un certo gioco.
:param appid: ID Steam dell'applicazione
"""
# Parametri della richiesta
parametri = {
'key': steamtoken,
'appid': appid,
}
# Manda la richiesta ai server di Steam.
r = requests.get("http://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v0001/",
params=parametri).json()
if 'player_count' in r['response']:
return r['response']['player_count']
else:
return None
def getPlayerAchievements(appid, steamid):
"""Ottieni gli achievement del giocatore e del gioco specificato."""
#Parametri della richiesta
parametri = {
'key': steamtoken,
'steamid': steamid,
'appid': appid,
'l': 'IT' #Mettendo questo vengono in inglese...? What.
}
#Manda la richiesta ai server di Steam.
r = requests.get("http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/", params=parametri).json()
return r['playerstats']
"""Ottieni gli achievement del giocatore e del gioco specificato.
:param appid: ID dell'applicazione
:param steamid: SteamID 32 del giocatore
"""
# Parametri della richiesta
parametri = {
'key': steamtoken,
'steamid': steamid,
'appid': appid,
'l': 'IT' # Mettendo questo vengono in inglese...? What.
}
# 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):
"""Ottieni il livello del profilo di Steam."""
parametri = {
'key': steamtoken,
'steamid': steamid,
}
#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']
"""Ottieni il livello del profilo di Steam.
:param steamid: SteamID 32 del giocatore
"""
parametri = {
'key': steamtoken,
'steamid': steamid,
}
# 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):
"""Guarda se il gioco a cui sta giocando qualcuno è condiviso.\nAh, Steam vuole sapere l'ID del gioco a cui sta giocando, quindi mettetecelo."""
parametri = {
'key': steamtoken,
'steamid': steamid,
'appid_playing': appid,
}
#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?
"""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 = {
'key': steamtoken,
'steamid': steamid,
'appid_playing': appid,
}
# 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 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.
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
# 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.
telegramtoken = filemanager.readfile('telegramapi.txt')
def getUpdates():
"""Ricevi gli ultimi aggiornamenti dal server di Telegram e restituisci l'ultimo messaggio non letto."""
while(True):
parametri = {
'offset': filemanager.readFile("lastid.txt"), #Update ID del messaggio da leggere
'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 getme():
"""Visualizza dati sul bot."""
# Manda la richiesta
data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getMe")
return data
def sendLocation(lat, long, to):
"""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)
def getupdates():
"""Ricevi gli ultimi aggiornamenti dal server di Telegram e restituisci l'ultimo messaggio non letto."""
while True:
parametri = {
'offset': filemanager.readfile("lastid.txt"), # Update ID del messaggio da leggere
'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']:
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."""
#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)
def sendmessage(content, to):
"""Manda un messaggio a una chat.
:param content: Testo del messaggio
:param to: Destinatario del messaggio
"""
# Parametri del messaggio
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)