diff options
author | jomo <github@jomo.tv> | 2014-07-27 23:55:15 +0200 |
---|---|---|
committer | jomo <github@jomo.tv> | 2014-07-27 23:55:15 +0200 |
commit | dc6d4d5f4b7c1810e2065dcd8c7fb035f00d3167 (patch) | |
tree | eaca98350f34691241c9058cd448bcf7cacae140 /mentio.py | |
parent | b0aa83104c9b3e0d92df55dfbd2a22d0bde95f9a (diff) |
remove try/except. fix code if it doesn't work ;)
Diffstat (limited to 'mentio.py')
-rw-r--r-- | mentio.py | 169 |
1 files changed, 81 insertions, 88 deletions
@@ -11,101 +11,94 @@ colors_reg = reg_compile(u"\u00A7[\\da-fk-or]") @hook.event("player.AsyncPlayerChatEvent", "high") def onChat(event): - try: - if not event.isCancelled(): - sender = event.getPlayer() - words = event.getMessage().split(" ") - recipients = event.getRecipients() - - for recipient in list(recipients): - listeners = mentions[str(recipient.getUniqueId())] - rec_words = words[:] # copy - for i in range(len(rec_words)): - word = rec_words[i] - isMentioned = False - - if recipient.getName().lower() in word.lower(): # is the player's full ign in the list - isMentioned = True - - if word.lower() in [i.lower() for i in listeners]: # is the word in the listeners list - isMentioned = True - - if isMentioned: - # join all color codes used upto this word - colors = "".join(colors_reg.findall("".join(words[:i+1]))) - # highlight word containing mention, then apply all previous color codes - rec_words[i] = colorify("&r&a&n") + stripcolors(word) + colorify("&r") + colors - - # player was mentioned - if rec_words != words: - try: - recipients.remove(recipient) # don't send original message - except: - # list might not be mutable, ignoring. Receiver will get the message twice - pass - message = " ".join([sender.getDisplayName(), arrow] + rec_words) - msg(recipient, message, usecolor = False) - recipient.playSound(recipient.getLocation(), "liquid.lavapop", 1, 2) - except: - error("Failed to handle PlayerChatEvent:") - error(print_traceback()) + if not event.isCancelled(): + sender = event.getPlayer() + words = event.getMessage().split(" ") + recipients = event.getRecipients() + + for recipient in list(recipients): + listeners = mentions[str(recipient.getUniqueId())] + rec_words = words[:] # copy + for i in range(len(rec_words)): + word = rec_words[i] + isMentioned = False + + if recipient.getName().lower() in word.lower(): # is the player's full ign in the list + isMentioned = True + + if word.lower() in [i.lower() for i in listeners]: # is the word in the listeners list + isMentioned = True + + if isMentioned: + # join all color codes used upto this word + colors = "".join(colors_reg.findall("".join(words[:i+1]))) + # highlight word containing mention, then apply all previous color codes + rec_words[i] = colorify("&r&a&n") + stripcolors(word) + colorify("&r") + colors + + # player was mentioned + if rec_words != words: + try: + recipients.remove(recipient) # don't send original message + except: + # list might not be mutable, ignoring. Receiver will get the message twice + pass + message = " ".join([sender.getDisplayName(), arrow] + rec_words) + msg(recipient, message, usecolor = False) + recipient.playSound(recipient.getLocation(), "liquid.lavapop", 1, 2) @hook.command("listen") def onListenCommand(sender, args): - try: - currWords = [] - if str(sender.getUniqueId()) in mentions.keys(): - currWords = mentions[str(sender.getUniqueId())] - - # /listen add <word> - if len(args) == 2 and args[0].lower() == "add": - - if len(currWords) >= max_amount: - msg(sender, "&cYou are already listening for %s words! Try &6/listen del <word>" % max_amount) - return True - if len(args[1].lower()) > 16: - msg(sender, "&cThis word is longer than 16 characters. Pick a shorter one!") - if args[1].lower() in currWords: - msg(sender, "&cYou are already listening for this word! Try &6/listen list") - return True - if args[1].lower() is sender.getName(): - msg(sender, "&cYou are always listening for your full ingame name by default") - currWords.append(args[1].lower()) - mentions[str(sender.getUniqueId())] = currWords - msg(sender, "&aYou are now listening for '&2"+args[1].lower()+"'!") - saveMentions() + currWords = [] + if str(sender.getUniqueId()) in mentions.keys(): + currWords = mentions[str(sender.getUniqueId())] + + # /listen add <word> + if len(args) == 2 and args[0].lower() == "add": + + if len(currWords) >= max_amount: + msg(sender, "&cYou are already listening for %s words! Try &6/listen del <word>" % max_amount) return True - # /listen del <word> - elif len(args) == 2 and args[0].lower() == "del": - if len(currWords) <= 0: - msg(sender, "&cYou are currently listening for no words! Try &6/listen add <word>") - return True - success = False - for word in currWords[:]: - if word.lower() == args[1].lower(): - currWords.remove(word.lower()) - mentions[str(sender.getUniqueId())] = currWords - success = True - if success == True: - saveMentions() - msg(sender, "&eYou are no longer listening for '&2"+args[1].lower()+"&e'!") - else: - msg(sender, "&cWe can't remove something that doesn't exist! Try &6/listen list") + if len(args[1].lower()) > 16: + msg(sender, "&cThis word is longer than 16 characters. Pick a shorter one!") + if args[1].lower() in currWords: + msg(sender, "&cYou are already listening for this word! Try &6/listen list") return True - - # /listen list - elif len(args) == 1 and args[0].lower() == "list": - msg(sender, "&6Words you're listening for:") - for word in currWords: - msg(sender, "&c- &3"+word) + if args[1].lower() is sender.getName(): + msg(sender, "&cYou are always listening for your full ingame name by default") + currWords.append(args[1].lower()) + mentions[str(sender.getUniqueId())] = currWords + msg(sender, "&aYou are now listening for '&2"+args[1].lower()+"'!") + saveMentions() + return True + # /listen del <word> + elif len(args) == 2 and args[0].lower() == "del": + if len(currWords) <= 0: + msg(sender, "&cYou are currently listening for no words! Try &6/listen add <word>") + return True + success = False + for word in currWords[:]: + if word.lower() == args[1].lower(): + currWords.remove(word.lower()) + mentions[str(sender.getUniqueId())] = currWords + success = True + if success == True: + saveMentions() + msg(sender, "&eYou are no longer listening for '&2"+args[1].lower()+"&e'!") else: - msg(sender, "&eNobody calls you %s &efor some particular reason? Too long? Add some aliases!\n\n" % sender.getDisplayName()) - msg(sender, "&6/listen add <word>") - msg(sender, "&6/listen del <word>") - msg(sender, "&6/listen list") - except Exception, e: - error(e) + msg(sender, "&cWe can't remove something that doesn't exist! Try &6/listen list") + return True + + # /listen list + elif len(args) == 1 and args[0].lower() == "list": + msg(sender, "&6Words you're listening for:") + for word in currWords: + msg(sender, "&c- &3"+word) + else: + msg(sender, "&eNobody calls you %s &efor some particular reason? Too long? Add some aliases!\n\n" % sender.getDisplayName()) + msg(sender, "&6/listen add <word>") + msg(sender, "&6/listen del <word>") + msg(sender, "&6/listen list") def saveMentions(): |