1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 19:44:20 +00:00

Creato un sistema di mapping comando -> funzione

This commit is contained in:
Steffo 2016-11-17 19:26:50 +01:00
parent 15c4202067
commit 3e31c201b2

97
bot.py
View file

@ -80,7 +80,6 @@ def steamplayers():
print("@" + username + ": /steamplayers") print("@" + username + ": /steamplayers")
# Informa Telegram che il messaggio è stato ricevuto e visualizza Royal Bot sta scrivendo. # Informa Telegram che il messaggio è stato ricevuto e visualizza Royal Bot sta scrivendo.
telegram.sendchataction(sentin) telegram.sendchataction(sentin)
cmd = text.split(" ")
# Se è stato specificato un AppID... # Se è stato specificato un AppID...
if len(cmd) >= 2: if len(cmd) >= 2:
n = steam.getnumberofcurrentplayers(cmd[1]) n = steam.getnumberofcurrentplayers(cmd[1])
@ -115,7 +114,6 @@ def osucmd():
# Informa Telegram che il messaggio è stato ricevuto. # Informa Telegram che il messaggio è stato ricevuto.
telegram.sendchataction(sentin) telegram.sendchataction(sentin)
# Trova il nome utente specificato # Trova il nome utente specificato
cmd = text.split(' ', 1)
# Se è stato specificato un nome utente # Se è stato specificato un nome utente
if len(cmd) >= 2: if len(cmd) >= 2:
# Trova la modalità # Trova la modalità
@ -123,7 +121,6 @@ def osucmd():
# 1 = osu!taiko # 1 = osu!taiko
# 2 = osu!catch # 2 = osu!catch
# 3 = osu!mania # 3 = osu!mania
cmd = text.split(' ', 2)
# Se è stata specificata una modalità # Se è stata specificata una modalità
if len(cmd) >= 3: if len(cmd) >= 3:
# Modalità specificata # Modalità specificata
@ -265,7 +262,6 @@ def osucmd():
def roll(): def roll():
print("@" + username + ": /roll") print("@" + username + ": /roll")
cmd = text.split(' ', 1)
# Se è stato specificato un numero # Se è stato specificato un numero
if len(cmd) >= 2: if len(cmd) >= 2:
if cmd[1] == "tm": if cmd[1] == "tm":
@ -356,7 +352,6 @@ def online():
print("@" + username + ": /online ") print("@" + username + ": /online ")
# Informa Telegram che il messaggio è stato ricevuto. # Informa Telegram che il messaggio è stato ricevuto.
telegram.sendchataction(sentin) telegram.sendchataction(sentin)
cmd = text.split(" ")
if len(cmd) >= 2: if len(cmd) >= 2:
if cmd[1].lower() == "help": if cmd[1].lower() == "help":
telegram.sendmessage(chr(128309) + " Online\n" + telegram.sendmessage(chr(128309) + " Online\n" +
@ -408,7 +403,6 @@ def shrek():
def diario(): def diario():
# Aggiungi una riga al diario Royal Games # Aggiungi una riga al diario Royal Games
print("@" + username + ": /diario ") print("@" + username + ": /diario ")
cmd = text.split(" ", 1)
if len(cmd) > 1: if len(cmd) > 1:
if cmd[1].isprintable(): if cmd[1].isprintable():
cmd[1] = cmd[1].replace("\n", " ") cmd[1] = cmd[1].replace("\n", " ")
@ -454,7 +448,6 @@ def lolfree():
# Informa Telegram che il messaggio è stato ricevuto. # Informa Telegram che il messaggio è stato ricevuto.
telegram.sendchataction(sentin) telegram.sendchataction(sentin)
ora = time.gmtime() ora = time.gmtime()
cmd = text.split(" ", 1)
if len(cmd) > 1: if len(cmd) > 1:
refresh_requested = cmd[1].startswith("refresh") refresh_requested = cmd[1].startswith("refresh")
else: else:
@ -513,8 +506,6 @@ def match():
print("@" + username + ": /match") print("@" + username + ": /match")
# Informa Telegram che il messaggio è stato ricevuto. # Informa Telegram che il messaggio è stato ricevuto.
telegram.sendchataction(sentin) telegram.sendchataction(sentin)
# Prepara il match
cmd = text.split(" ")
tobematched = list() tobematched = list()
if len(cmd) > 2: if len(cmd) > 2:
del cmd[0] del cmd[0]
@ -538,6 +529,39 @@ def match():
telegram.sendmessage(chr(9888) + "Non sono stati specificati abbastanza utenti per eseguire l'azione.", telegram.sendmessage(chr(9888) + "Non sono stati specificati abbastanza utenti per eseguire l'azione.",
sentin, source) sentin, source)
# Alias di tutti i comandi. Scrivendo quella stringa in chat viene attivata la funzione corrispondente.
aliases = {
"ahnonlosoio": ahnonlosoio,
"ahboh": ahnonlosoio,
"ciaostefanino": ciaostefanino,
"balurage": balurage,
"madden": balurage,
"ciaoruozi": ciaoruozi,
"ciaospaggia": ciaospaggia,
"buongiornostellina": ciaospaggia,
"stellina": ciaospaggia,
"ehoh": ehoh,
"sbam": sbam,
"rekt": sbam,
"osu": osucmd,
"roll": roll,
"cv": cv,
"discord": cv,
"shrek": shrek,
"diario": diario,
"d": diario,
"leggi": leggi,
"match": match,
"lol": lolfree,
"lolfree": lolfree,
"legoflegend": lolfree,
"getrygimage": getrygimage,
"version": version,
"smecds": smecds,
"online": online,
"steam": online,
"wow": wow
}
# Ciclo principale del bot # Ciclo principale del bot
print("Bot avviato!") print("Bot avviato!")
@ -584,52 +608,15 @@ while True:
username = str(msg['from']['id']) username = str(msg['from']['id'])
# Se sei un membro della Royal Games # Se sei un membro della Royal Games
if username.lower() in royalgames: if username.lower() in royalgames:
# Riconosci il comando. # Riconosci il comando e dividilo in comando e argomenti.
# Viene usato startswith perchè il comando potrebbe anche essere inviato in forma /ciao@RoyalBot. cmd = text.lower().split(" ")
# Non si potrebbe migliorare qui in qualche modo? Tipo con un dict. # Togli il @RoyalBot alla fine del comando
if text.startswith('/ahnonlosoio') or text.startswith("/ahboh"): cmd[0] = cmd[0].replace("@royalbot", "")
ahnonlosoio() # Prova ad eseguire il comando. Se non è nella lista degli alias, ignoralo.
elif text.startswith('/ciaostefanino'): try:
ciaostefanino() aliases[cmd[0]]()
elif text.startswith('/balurage') or text.startswith("/madden"): except KeyError:
balurage() print("@" + username + ": comando inesistente")
elif text.startswith('/ciaoruozi'):
ciaoruozi()
elif text.startswith('/ehoh'):
ehoh()
elif text.startswith('/sbam') or text.startswith('/rekt'):
sbam()
elif text.startswith('/osu'):
osucmd()
elif text.startswith('/roll'):
roll()
elif text.startswith('/cv') or text.startswith('/discord'):
cv()
elif text.startswith('/online'):
online()
elif text.startswith('/shrek'):
shrek()
elif text.startswith('/diario'):
diario()
elif text.startswith('/leggi'):
leggi()
elif text.startswith('/lol'):
lolfree()
elif text.startswith('/ombromanto'):
ombromanto()
elif text.startswith('/getrygimage'):
getrygimage()
elif text.startswith('/smecds'):
smecds()
elif text.startswith('/ciaospaggia'):
ciaospaggia()
elif text.startswith('/version'):
version()
elif text.startswith('/match'):
match()
elif text.startswith('/crash'):
if username == "Steffo":
raise Exception("SMECDS")
else: else:
print("@" + username + " bloccato.") print("@" + username + " bloccato.")
except Exception as e: except Exception as e: