From c84dce9d34d35fa6f71f18565ec55d0e54604a2c Mon Sep 17 00:00:00 2001 From: Pepich Date: Mon, 2 Nov 2015 00:02:44 +0100 Subject: Added colorsupport, fixed perms and limits into file, added length limitations, made file PEP8 conform --- chatalias.py | 97 +++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 54 insertions(+), 43 deletions(-) diff --git a/chatalias.py b/chatalias.py index dc7db72..0a34ebe 100644 --- a/chatalias.py +++ b/chatalias.py @@ -17,95 +17,102 @@ from traceback import format_exc as trace data = None +max_entries = 10 +max_alias_length = 35 +# minecraft message limit is 100 so I decided to give a little tolerance +max_overall_length = 115 + +alias_perm = "utils.alias.allowed" +exceed_length = "utils.alias.exceedlimit" +exceed_entries = "utils.alias.exceedlimit" +exceed_overall_length = "utils.alias.exceedlimit" + + def safe_open_json(): global data if data is not None: return data data = open_json_file("aliases") if data is None: - data = {"gnl":{"max_len":"35","max_entries":"10"}} + data = {} save_json_file("aliases", data) return data -@hook.command("alias", usage = "/ [to_alias] [alias...]", desc = "Aliases words in chat") +@hook.command("alias", + usage="/ [to_alias] [alias...]", + desc="Aliases words in chat") def on_alias_command(sender, cmd, label, args): if not is_player(sender): - msg(sender, "Sorry, Console cannot alias words") - return True - - if not sender.hasPermission("utils.alias.allowed"): - plugin_header(recipient = sender, name = "Chat Alias") + msg(sender, "Sorry, Console cannot alias words") + return True + if not sender.hasPermission(alias_perm): + plugin_header(recipient=sender, name="Chat Alias") noperm(sender) return True - if len(args) == 0: - plugin_header(recipient = sender, name = "Chat Alias") - msg(sender, "This is a plugin that allows you to type in chat and have words replaced by other ones automatically!") - msg(sender, "\nCommands:") - msg(sender, "/alias : removes from aliased words. Use * to remove all aliased words.") - msg(sender, "/alias : Will change to in chat") - msg(sender, "\nYour Aliases:") + plugin_header(recipient=sender, name="Chat Alias") + msg(sender, "&7This is a plugin that allows you to get words" + + "replaced by other ones automatically!") + msg(sender, "&7\nCommands:") + msg(sender, "&e/alias &7removes from your aliases. " + + "Use &e/alias * &7to remove all aliases.") + msg(sender, "&e/alias &7will change &e " + + "&7to &e &7in chat") + msg(sender, "&7\nYour Aliases:") data = safe_open_json() try: for alias, value in data[str(sender.getUniqueId())].items(): - msg(sender, "%s ==> %s" % (alias, value)) + msg(sender, "&7%s &7==> %s" % (alias, value)) except KeyError: pass return True - elif len(args) == 1: data = safe_open_json() if args[0] == "*": try: del data[str(sender.getUniqueId())] except KeyError: - plugin_header(recipient = sender, name = "Chat Alias") - msg(sender, "No alias data to remove!") + plugin_header(recipient=sender, name="Chat Alias") + msg(sender, "&7No alias data to remove!") return True save_json_file("aliases", data) - plugin_header(recipient = sender, name = "Chat Alias") - msg(sender, "ALL alias data successfuly removed!") + plugin_header(recipient=sender, name="Chat Alias") + msg(sender, "&cALL &7alias data successfuly removed!") return True - try: if data[str(sender.getUniqueId())].pop(args[0], None) is None: - plugin_header(recipient = sender, name = "Chat Alias") - msg(sender, "Could not remove: alias not present!") + plugin_header(recipient=sender, name="Chat Alias") + msg(sender, "&7Could not remove: alias not present!") return True except KeyError: - plugin_header(recipient = sender, name = "Chat Alias") - msg(sender, "Could not remove: you do not have any aliases!") + plugin_header(recipient=sender, name="Chat Alias") + msg(sender, "&7Could not remove: you do not have any aliases!") return True - save_json_file("aliases", data) - plugin_header(recipient = sender, name = "Chat Alias") - msg(sender, "Alias for %s successfuly removed" % args[0]) + plugin_header(recipient=sender, name="Chat Alias") + msg(sender, "&7Alias for %s &7successfuly removed" % args[0]) return True - elif len(args) >= 2: data = safe_open_json() alias = " ".join(args[1:]) try: - if len(alias) > int(data["gnl"]["max_len"]) and int(data["gnl"]["max_len"]) >= 0: - plugin_header(recipient = sender, name = "Chat Alias") - msg(sender, "Please do not alias long words/sentences.") + if (len(alias) > max_alias_length) and (max_alias_length >= 0) and (not sender.hasPermission(exceed_length)): + plugin_header(recipient=sender, name="Chat Alias") + msg(sender, "&7Please do not alias long words/sentences.") return True - - if len(data[str(sender.getUniqueId())]) >= int(data["gnl"]["max_entries"]) and int(data["gnl"]["max_entries"]) >= 0: - plugin_header(recipient = sender, name = "Chat Alias") - msg(sender, "You have reached the maximum amount of alias entries! Sorry!") + if (len(data[str(sender.getUniqueId())]) >= max_entries) and (max_entries >= 0) and (not sender.hasPermission(exceed_entries)): + plugin_header(recipient=sender, name="Chat Alias") + msg(sender, "&7You have reached your alias limit!") return True except KeyError: data[str(sender.getUniqueId())] = {} - data[str(sender.getUniqueId())][args[0]] = alias save_json_file("aliases", data) - plugin_header(recipient = sender, name = "Chat Alias") - msg(sender, "Chat Alias %s ==> %s successfully created!" % (args[0], alias)) + plugin_header(recipient=sender, name="Chat Alias") + msg(sender, "&7Chat Alias %s &7==> %s &7successfully created!" % (args[0], alias)) return True - else: return False @@ -114,14 +121,18 @@ def on_alias_command(sender, cmd, label, args): def on_player_chat(event): playerid = str(event.getPlayer().getUniqueId()) data = safe_open_json() - if event.isCancelled(): return - try: crashtest = data[playerid].items() except KeyError: return - for alias, value in data[playerid].items(): event.setMessage(event.getMessage().replace(alias, value)) + if (event.getPlayer().hasPermission('essentials.chat.color')): + event.setMessage(colorify(event.getMessage())) + if (len(event.getMessage()) > max_overall_length) and (not sender.hasPermission(exceed_overall_length)): + event.setCancelled(True) + msg(sender, "&7The message generated was too long and was not sent " + + "but it would've looked like that:") + msg(sender, event.getMessage()) -- cgit v1.2.3