summaryrefslogtreecommitdiff
path: root/adminnotes.py
diff options
context:
space:
mode:
authorGap <l.uisv.gt@icloud.com>2015-01-14 18:29:38 +0100
committerGap <l.uisv.gt@icloud.com>2015-01-14 18:29:38 +0100
commit7c6bfd7f124f578849c5998ce9c580b9174aa8d3 (patch)
tree342fda309dab7eea042705a1ce10810969f56c21 /adminnotes.py
parent3e6683725eca07d622d61ea33f64259ac34a9574 (diff)
Adds note module
Diffstat (limited to 'adminnotes.py')
-rw-r--r--adminnotes.py125
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