From ccef5ab2af74a717047522b8a2addcf990cd7919 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Mon, 1 Feb 2016 17:58:09 +0100 Subject: [PATCH 1/5] =?UTF-8?q?Messo=20un=20po'=20di=20commenti.=20Perch?= =?UTF-8?q?=C3=A8=20no=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot.py | 77 ++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 43 insertions(+), 34 deletions(-) diff --git a/bot.py b/bot.py index d7c1d4ce..628fa866 100644 --- a/bot.py +++ b/bot.py @@ -173,13 +173,15 @@ while True: # Viene usato startswith perchè il comando potrebbe anche essere inviato in forma /ciao@RoyalBot. if text.startswith('/ahnonlosoio'): print("@" + username + ": /ahnonlosoio") + # Rispondi con Ah, non lo so nemmeno io. telegram.sendmessage("Ah, non lo so nemmeno io!", sentin, source) elif text.startswith('/ehoh'): print("@" + username + ": /ehoh") + # Rispondi con Eh, oh. Sono cose che capitano. telegram.sendmessage("Eh, oh. Sono cose che capitano.", sentin, source) elif text.startswith('/playing'): print("@" + username + ": /playing") - # Informa Telegram che il messaggio è stato ricevuto. + # Informa Telegram che il messaggio è stato ricevuto e visualizza Royal Bot sta scrivendo. telegram.sendchataction(sentin) cmd = text.split(" ") # Se è stato specificato un AppID... @@ -196,7 +198,8 @@ while True: 'La sintassi corretta è /playing .', sentin, source) elif text.startswith('/saldi'): print("@" + username + ": /saldi") - # Informa Telegram che il messaggio è stato ricevuto. + # Visualizza il link di isthereanydeal con i saldi di un gioco. + # Informa Telegram che il messaggio è stato ricevuto e visualizza Royal Bot sta scrivendo. telegram.sendchataction(sentin) cmd = text.split(" ", 1) if len(cmd) == 2: @@ -210,51 +213,45 @@ while True: "[Visualizza tutte le offerte]" "(https://isthereanydeal.com/#/search:.;/scroll:%23gamelist).", sentin, source) - # elif text.startswith('/audio'): - # # Se qualcuno ne ha voglia, qui si potrebbe aggiungere la selezione degli audio come argomento, - # # invece che fare una playlist casuale... - # # Se non ci sono rage nella playlist, riempila e mescolala! - # if len(rage) <= 0: - # # TODO: Rimettere gli audio di /audio - # rage = [] - # random.shuffle(rage) - # # Estrai un audio a caso tra quelli nella playlist e rimuovilo. - # ragesend = rage.pop() - # print("@" + username + ": /audio") - # telegram.senddocument(ragesend, sentin, source) elif text.startswith('/sbam'): print("@" + username + ": /sbam") + # Manda l'audio contenente gli sbam di tutti i membri Royal Games. telegram.senddocument('BQADAgADBwMAAh8GgAGSsR4rwmk_LwI', sentin) - # elif text.startswith('/wololo'): - # print("@" + username + ": /wololo") - # if len(cmd) >= 2: - # telegram.senddocument(wololo[int(cmd[1]) - 1], sentin, source) - # else: - # telegram.senddocument('BQADAgADZwIAAh8GgAF3etjqkzFDxAI', sentin, source) elif text.startswith('/osu'): print("@" + username + ": /osu") + # Visualizza il punteggio più recente di osu! # Informa Telegram che il messaggio è stato ricevuto. telegram.sendchataction(sentin) - # Trova il nome utente + # Trova il nome utente specificato cmd = text.split(' ', 1) + # Se è stato specificato un nome utente if len(cmd) >= 2: # Trova la modalità + # 0 = osu! + # 1 = osu!taiko + # 2 = osu!catch + # 3 = osu!mania cmd = text.split(' ', 2) + # Se è stata specificata una modalità if len(cmd) >= 3: # Modalità specificata mode = int(cmd[2]) else: - # Osu! normale + # Imposta la modalità a osu! mode = 0 + # Prova a mandare una richiesta ai server di osu per l'ultima canzone giocata try: r = osu.getuserrecent(cmd[1], mode) + # Se la funzione restituisce un errore, riferisci su Telegram l'errore e previeni il crash. except NameError: telegram.sendmessage(chr(9888) + " Errore nella richiesta ai server di Osu!", sentin, source) + # Se tutto va bene, continua! else: + # Se ci sono delle mod attive... if "enabled_mods" in r: mods = "*Mod:*" - # Adoro SE - # Dividi in bit l'ID delle mod selezionate + # Dividi in bit l'ID delle mod selezionate usando un bitwise and + # Forse si potrebbe rifare usando la forma esadecimale...? if int(r['enabled_mods']) & 0b1: mods += " NoFail" if int(r['enabled_mods']) & 0b10: @@ -311,9 +308,11 @@ while True: mods += " 2K" mods += '\n' else: + # Lascia la riga delle mod vuota. mods = '\n' if mode == 0: - telegram.sendmessage("*Osu!*\n" + # Visualizza le informazioni relative alla modalità osu! + telegram.sendmessage("*osu!*\n" "[Beatmap " + r['beatmap_id'] + "](" + 'https://osu.ppy.sh/b/' + r[ 'beatmap_id'] + ")\n*" + r['rank'] + "*\n" + mods + @@ -326,7 +325,8 @@ while True: "*Good*: " + r['countgeki'] + "\n" "*Miss*: " + r['countmiss'], sentin, source) elif mode == 1: - telegram.sendmessage("*Taiko*\n" + # Visualizza le informazioni relative alla modalità osu!taiko + telegram.sendmessage("*osu!taiko*\n" "[Beatmap " + r['beatmap_id'] + "](" + 'https://osu.ppy.sh/b/' + r[ 'beatmap_id'] + ")\n*" + r['rank'] + "*\n" + mods + @@ -338,7 +338,8 @@ while True: "_Large_ *Good*: " + r['countgeki'] + "\n" "*Bad*: " + r['countmiss'], sentin, source) elif mode == 2: - telegram.sendmessage("*Catch the Beat*\n" + # Visualizza le informazioni relative alla modalità osu!catch + telegram.sendmessage("*osu!catch*\n" "[Beatmap " + r['beatmap_id'] + "](" + 'https://osu.ppy.sh/b/' + r[ 'beatmap_id'] + ")\n*" + r['rank'] + "*\n" + mods + @@ -349,7 +350,8 @@ while True: "*Droplet* _trail_: " + r['count50'] + "\n" "*Miss*: " + r['countmiss'], sentin, source) elif mode == 3: - telegram.sendmessage("*Osu!mania*\n" + + # Visualizza le informazioni relative alla modalità osu!mania + telegram.sendmessage("*osu!mania*\n" + "[Beatmap " + r['beatmap_id'] + "](" + 'https://osu.ppy.sh/b/' + r[ 'beatmap_id'] + ")\n*" + r['rank'] + "*\n" + mods + "\n*Punti*: " + r['score'] + "\n" @@ -366,7 +368,6 @@ while True: r = osu.getuserrecent(osunames[username.lower()], 0) if "enabled_mods" in r: mods = "*Mod:*" - # Adoro SE # Dividi in bit l'ID delle mod selezionate if int(r['enabled_mods']) & 0b1: mods += " NoFail" @@ -440,22 +441,28 @@ while True: elif text.startswith('/roll'): print("@" + username + ": /roll") cmd = text.split(' ', 1) + # Se è stato specificato un numero if len(cmd) >= 2: + # Controlla che sia convertibile in un intero. try: m = int(cmd[1]) except ValueError: telegram.sendmessage(chr(9888) + " Il numero specificato non è un intero.", sentin, source) else: + # Imposta il numero massimo a 100. m = 100 + # Prova a generare un numero casuale. try: n = random.randrange(m) + 1 except ValueError: - telegram.sendmessage(chr(9888) + " Il numero specificato non è maggiore o uguale a 0.", sentin, source) + telegram.sendmessage(chr(9888) + " Il numero specificato non è maggiore o uguale a 0.", sentin, + source) + # Se tutto va bene visualizza il numero generato else: telegram.sendmessage("Numero casuale da 1 a " + str(m) + ":\n*" + str(n) + "*", sentin, source) elif text.startswith('/automah'): print("@" + username + ": /automah") - # TODO: Mettere l'audio di Tobia + # Invia il messaggio. telegram.sendmessage("Automaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa! Devi funzionare, cavolo!", sentin, source) elif text.startswith('/hs'): @@ -463,14 +470,16 @@ while True: # Informa Telegram che il messaggio è stato ricevuto. telegram.sendchataction(sentin) cmd = text.split(" ", 1) - r = None + # Se è stata specificata una carta... if len(cmd) >= 2: + # Controlla che la carta specificata esista. try: r = hearthstone.card(cmd[1]) # Se ci sono più carte, prendine una a caso! r = r[random.randrange(len(r))] except ValueError: telegram.sendmessage(chr(9888) + " La carta specificata non esiste!", sentin, source) + # Se tutto va bene, elabora e visualizza le informazioni sulla carta. else: # Si trova nelle bustine if 'howToGet' not in r: @@ -484,11 +493,12 @@ while True: # Nessun effetto if 'text' not in r: r['text'] = "" - # HTML nella descrizione + # Converti l'HTML nella descrizione in Markdown. Circa. r['text'] = r['text'].replace("", "*") r['text'] = r['text'].replace("", "*") r['text'] = r['text'].replace("", "_") r['text'] = r['text'].replace("", "_") + # Togli il $, che indica che il numero di danni può essere modificato dallo Spell Damage r['text'] = r['text'].replace("$", "") # Nessuna rarità if 'rarity' not in r: @@ -497,7 +507,6 @@ while True: if 'flavor' not in r: r['flavor'] = "" # Testo principale - text = None # Magie if r['type'] == "Spell": text = str("[" + r['name'] + "](" + r['img'] + ") " From 5ec08d2d62a3ac047721b0ecc5b7454903ebba94 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 2 Feb 2016 16:08:49 +0100 Subject: [PATCH 2/5] Aggiunto comando /leggi per visualizzare i messaggi --- bot.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/bot.py b/bot.py index 628fa866..88ea1de1 100644 --- a/bot.py +++ b/bot.py @@ -655,6 +655,16 @@ while True: d += str(time.time()) + " | " + cmd[1] + "\n" filemanager.writefile("diario.txt", d) telegram.sendmessage("Aggiunto al diario RYG.", sentin, source) + elif text.startswith('/leggi'): + print("@" + username + ": /leggi") + cmd = text.split(" ", 1) + d = filemanager.readfile("diario.txt") + d = d.split('\n') + text = str() + # L'ultimo numero è escluso. + for n in range(int(cmd[1]) + 1, 1, -1): + text += d[len(d) - n] + "\n" + telegram.sendmessage(text, sentin, source) else: print("@" + username + " bloccato.") From 32f68ffdb6c574da2a81f9cae5b5c1999813e703 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 2 Feb 2016 16:19:39 +0100 Subject: [PATCH 3/5] Ops. Sbagliato a sistemare. --- bot.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bot.py b/bot.py index 40ed2e3d..fc2d5576 100644 --- a/bot.py +++ b/bot.py @@ -277,7 +277,6 @@ while True: mods = "*Mod:*" # Dividi in bit l'ID delle mod selezionate usando un bitwise and # Forse si potrebbe rifare usando la forma esadecimale...? - if int(r['enabled_mods']) & 0b1: if int(r['enabled_mods']) & 0x1: mods += " NoFail" if int(r['enabled_mods']) & 0x2: From 0e6faf7adb8cb2020268eabf04e2d5e70469be1a Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 2 Feb 2016 19:24:19 +0100 Subject: [PATCH 4/5] Modifica al formato. --- bot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot.py b/bot.py index fc2d5576..252f0a58 100644 --- a/bot.py +++ b/bot.py @@ -677,7 +677,7 @@ while True: print("@" + username + ": /diario ") cmd = text.split(" ", 1) d = filemanager.readfile("diario.txt") - d += str(time.time()) + " | " + cmd[1] + "\n" + d += "`" + str(int(time.time())) + "` | " + cmd[1] + "\n" filemanager.writefile("diario.txt", d) telegram.sendmessage("Aggiunto al diario RYG.", sentin, source) elif text.startswith('/leggi'): From 1c49a3860b072e00d7710beb5d9d5311809dc443 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 2 Feb 2016 20:28:26 +0100 Subject: [PATCH 5/5] ora decente --- bot.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/bot.py b/bot.py index 252f0a58..4a2952de 100644 --- a/bot.py +++ b/bot.py @@ -677,7 +677,7 @@ while True: print("@" + username + ": /diario ") cmd = text.split(" ", 1) d = filemanager.readfile("diario.txt") - d += "`" + str(int(time.time())) + "` | " + cmd[1] + "\n" + d += str(int(time.time())) + "|" + cmd[1] + "\n" filemanager.writefile("diario.txt", d) telegram.sendmessage("Aggiunto al diario RYG.", sentin, source) elif text.startswith('/leggi'): @@ -688,7 +688,10 @@ while True: text = str() # L'ultimo numero è escluso. for n in range(int(cmd[1]) + 1, 1, -1): - text += d[len(d) - n] + "\n" + riga = d[len(d) - n] + riga = riga.split("|", 1) + ora = time.gmtime(int(riga[0])) + text += "`" + str(ora.tm_hour) + ":" + str(ora.tm_min) + "` " + riga[1] + "\n" telegram.sendmessage(text, sentin, source) else: print("@" + username + " bloccato.")