diff options
author | Gap <l.uisv.gt@icloud.com> | 2015-01-14 18:29:38 +0100 |
---|---|---|
committer | Gap <l.uisv.gt@icloud.com> | 2015-01-14 18:29:38 +0100 |
commit | 7c6bfd7f124f578849c5998ce9c580b9174aa8d3 (patch) | |
tree | 342fda309dab7eea042705a1ce10810969f56c21 /adminnotes.py | |
parent | 3e6683725eca07d622d61ea33f64259ac34a9574 (diff) |
Adds note module
Diffstat (limited to 'adminnotes.py')
-rw-r--r-- | adminnotes.py | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/adminnotes.py b/adminnotes.py new file mode 100644 index 0000000..622f563 --- /dev/null +++ b/adminnotes.py @@ -0,0 +1,125 @@ +from helpers import * +from traceback import format_exc as print_traceback +import time + +an_permission = "utils.an"; +notes = open_json_file("adminnotes", []) +continued_messages = {} + +def save_notes(): + save_json_file("adminnotes", notes) + +def r_ago(unit, i): + # Return ago + plural + i = i + if i != 1: + unit +="s" + return str(i)+" "+unit+" ago" + +def calc_diff(time_ago): + current = time.time() + s = current-time_ago + s = int(s) + ago = "Some time ago" + + if s < 10: + ago = "Just now" + elif s >= 10 and s < 60: + ago = r_ago("second", s) + elif s >= 60 and s < 3600: + ago = r_ago("minute", s/60) + elif s >= 3600 and s < 43200: + ago = r_ago("hour", s/60/60) + elif s >= 43200: + ago = r_ago("day", s/60/60/12) + return ago + +def show_all_notes(sender): + if len(notes) == 0: + msg(sender, "&aNo open notes at the moment!") + for i in range(0, len(notes)): + arr = notes[i] + name = arr[0] + message = arr[1] + note_time = arr[2] + + ago = calc_diff(note_time) + + msg(sender, "&6#%s - &e%s&6, %s:" % (str(i+1), name, ago)) + msg(sender, "&7%s" % colorify(message)) + +def show_an_help(sender): + msg(sender, "&6AdminNotes Help:") + msg(sender, "&e- /an") + msg(sender, "&7&oLists all notes") + msg(sender, "&e- /an del <ID>") + msg(sender, "&7&oRemove a note") + msg(sender, "&e- /an help") + msg(sender, "&7&oShows this menu") + msg(sender, "&e- /an Some text...") + msg(sender, "&7&oWrite a new note") + msg(sender, "&e- /an This text is very++") + msg(sender, "&7&oContinue writing your note when using &e/an long guys!&7&o again") + + +@hook.command("an", aliases=["adminnotes", "adminnote"]) +def adminnotes_command(sender, args): + if not sender.hasPermission(an_permission): + noperm(sender) + return + try: + arglen = len(args) + + # arg length not valid + if arglen < 1: + show_all_notes(sender) + return + + # Shows note help + if args[0].lower() == "help": + show_an_help(sender) + return + + # Delete note + if args[0].lower() == "del": + if arglen != 2: + show_an_help(sender) + return + if not args[1].isdigit(): + msg(sender, "&cThe ID has to be numeric (check /an if you're unsure)") + return + note_id = int(args[1])-1 + if note_id >= len(notes): + msg(sender, "&cThere is no note with that ID!") + return + # Deletes note by index + del notes[note_id] + save_notes() + msg(sender, "&aSuccessfully delete note #%s!" % str(note_id+1)) + return + + message = " ".join(args) + name = sender.getName() + if name in continued_messages: + message = continued_messages[name] + message + + if message[-2:] == "++": + message = message[:-2] + if message[-1:] != " ": + message += " " + continued_messages[name] = message + msg(sender, "&6You can continue writing by using &e/an <text ...>") + else: + notes.append([name, message, time.time()]) + save_notes() + msg(sender, "&eNew note:&6 "+message) + broadcast(an_permission, "&a%s just added a new note! &2Type /an") + except: + print(print_traceback()) + +@hook.event("player.PlayerJoinEvent", "monitor") +def on_an_join(event): + if len(notes) > 0: + msg(event.getPlayer(), "&cThere are currently %s open notes!" % len(notes)) + elif len(notes) == 0: + msg(event.getPlayer(), "&aThere are currently no open notes!")
\ No newline at end of file |