summaryrefslogtreecommitdiff
path: root/saylol.py
blob: 6da18c99ba487895008af2a2a6cc678de033db3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
from time import time
from helpers import *
from random import randrange

lols     = open_json_file("lol", [])
timeout  = 15
last_msg = 0



def save_lols():
  save_json_file("lol", lols)


def add_lol(txt):
  lols.append(txt)
  save_lols()


def del_lol(lid):
  lols.pop(lid)
  save_lols()


def print_lol(sender, lid):
  global last_msg
  if time() - last_msg > timeout:
    if len(lols) > lid:
      dispname = sender.getDisplayName() if is_player(sender) else sender.getName()
      broadcast(None, "&8[&blol&8] &7%s&8: &e%s" % (dispname, lols[lid]))
      last_msg = time()
    else:
      plugin_header(sender, "SayLol")
      msg(sender, "&cInvalid id")
  else:
    plugin_header(sender, "SayLol")
    msg(sender, "&cYou can use SayLol again in &a%s seconds!" % int(timeout + 1 - (time() - last_msg)))


def search_lols(sender, keyword):
  for i, lol in enumerate(lols):
    if keyword in lol:
      msg(sender, "&a%s: &e%s" % (str(i).rjust(3), lol))


@hook.command("lol")
def on_lol_command(sender, args):
  plugin_header(sender, "SayLol")

  cmd = args[0] if len(args) > 0 else None
  if len(args) == 0:
    if sender.hasPermission("utils.lol"):
      print_lol(sender, randrange(len(lols)))
    else:
      noperm(sender)

  elif cmd == "id":
    if sender.hasPermission("utils.lol.id"):
      try:
        i = int(args[1])
        print_lol(sender, i)
      except ValueError:
        msg(sender, "&cInvalid number '&e%s&c'" % args[1])
    else:
      noperm(sender)

  elif cmd == "list":
    for i in range(len(lols)):
      msg(sender, "&a%s: &e%s" % (str(i).rjust(3), lols[i]))

  elif cmd == "search":
    if sender.hasPermission("utils.lol.search"):
      search_lols(sender, " ".join(args[1:]))
    else:
      noperm(sender)

  elif cmd == "add":
    if sender.hasPermission("utils.lol.modify"):
      add_lol(" ".join(args[1:]))
      msg(sender, "&aNew lol message added!")
    else:
      noperm(sender)

  elif cmd == "del":
    if sender.hasPermission("utils.lol.modify"):
      try:
        i = int(args[1])
        del_lol(i)
        msg(sender, "&aLol message &e#%s&a deleted!" % i)
      except ValueError:
        msg(sender, "&cInvalid number '&e%s&c'" % args[1])

  else:
    msg(sender, "&a/lol            &eSay random message")
    msg(sender, "&a/lol list       &eList all messages")
    msg(sender, "&a/lol id <id>    &eSay specific message")
    msg(sender, "&a/lol add <text> &eAdd message")
    msg(sender, "&a/lol del <id>   &eDelete message")
  return True