Improve is_admin and is_owner to check for cloak in privmsg if available.
This commit is contained in:
parent
b490d91f7a
commit
1ce5d69113
@ -6048,7 +6048,7 @@ def get_help(cli, rnick, chan, rest):
|
||||
in fn[0].aliases and fn[0].chan):
|
||||
fns.append("\u0002"+name+"\u0002")
|
||||
afns = []
|
||||
if is_admin(nick):
|
||||
if is_admin(nick, cloak):
|
||||
for name, fn in COMMANDS.items():
|
||||
if fn[0].admin_only and name not in fn[0].aliases:
|
||||
afns.append("\u0002"+name+"\u0002")
|
||||
@ -6069,7 +6069,7 @@ def on_invite(cli, nick, something, chan):
|
||||
if chan == botconfig.CHANNEL:
|
||||
cli.join(chan)
|
||||
return # No questions
|
||||
if is_admin(parse_nick(nick)[0]):
|
||||
if is_admin(*parse_nick(nick)[:4:3]):
|
||||
cli.join(chan) # Allows the bot to be present in any channel
|
||||
debuglog(nick, "INVITE", chan, display=True)
|
||||
else:
|
||||
@ -6590,7 +6590,7 @@ def fsend(cli, nick, chan, rest):
|
||||
cli.send(rest)
|
||||
|
||||
def _say(cli, raw_nick, rest, command, action=False):
|
||||
nick = parse_nick(raw_nick)[0]
|
||||
nick, cloak = parse_nick(raw_nick)[:4:3]
|
||||
rest = rest.split(" ", 1)
|
||||
|
||||
if len(rest) < 2:
|
||||
@ -6601,7 +6601,7 @@ def _say(cli, raw_nick, rest, command, action=False):
|
||||
|
||||
(target, message) = rest
|
||||
|
||||
if not is_admin(nick):
|
||||
if not is_admin(nick, cloak):
|
||||
if nick not in var.USERS:
|
||||
pm(cli, nick, "You have to be in {0} to use this command.".format(
|
||||
botconfig.CHANNEL))
|
||||
|
@ -247,24 +247,42 @@ PING_IN_ACCS = [] # accounts of people who have opted in for ping
|
||||
|
||||
is_role = lambda plyr, rol: rol in ROLES and plyr in ROLES[rol]
|
||||
|
||||
def is_admin(nick):
|
||||
if nick not in USERS.keys():
|
||||
return False
|
||||
if USERS[nick]["account"] != "*": # Check only account
|
||||
if [ptn for ptn in botconfig.OWNERS_ACCOUNTS+botconfig.ADMINS_ACCOUNTS if fnmatch.fnmatch(USERS[nick]["account"].lower(), ptn.lower())]:
|
||||
return True
|
||||
if [ptn for ptn in botconfig.OWNERS+botconfig.ADMINS if fnmatch.fnmatch(USERS[nick]["cloak"].lower(), ptn.lower())]:
|
||||
return True
|
||||
def is_admin(nick, cloak=None, acc=None):
|
||||
if nick in USERS.keys():
|
||||
if not cloak:
|
||||
cloak = USERS[nick]["cloak"]
|
||||
if not acc:
|
||||
acc = USERS[nick]["account"]
|
||||
|
||||
if acc and acc != "*":
|
||||
for pattern in set(botconfig.OWNERS_ACCOUNTS + botconfig.ADMINS_ACCOUNTS):
|
||||
if fnmatch.fnmatch(acc.lower(), pattern.lower()):
|
||||
return True
|
||||
|
||||
if cloak:
|
||||
for pattern in set(botconfig.OWNERS + botconfig.ADMINS):
|
||||
if fnmatch.fnmatch(cloak.lower(), pattern.lower()):
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def is_owner(nick):
|
||||
if nick not in USERS.keys():
|
||||
return False
|
||||
if USERS[nick]["account"] != "*":
|
||||
if [ptn for ptn in botconfig.OWNERS_ACCOUNTS if fnmatch.fnmatch(USERS[nick]["account"].lower(), ptn.lower())]:
|
||||
return True
|
||||
if [ptn for ptn in botconfig.OWNERS if fnmatch.fnmatch(USERS[nick]["cloak"].lower(), ptn.lower())]:
|
||||
return True
|
||||
def is_owner(nick, cloak=None, acc=None):
|
||||
if nick in USERS.keys():
|
||||
if not cloak:
|
||||
cloak = USERS[nick]["cloak"]
|
||||
if not acc:
|
||||
acc = USERS[nick]["account"]
|
||||
|
||||
if acc and acc != "*":
|
||||
for pattern in botconfig.OWNERS_ACCOUNTS:
|
||||
if fnmatch.fnmatch(acc.lower(), pattern.lower()):
|
||||
return True
|
||||
|
||||
if cloak:
|
||||
for pattern in botconfig.OWNERS:
|
||||
if fnmatch.fnmatch(cloak.lower(), pattern.lower()):
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def plural(role):
|
||||
|
@ -110,14 +110,14 @@ def generate(fdict, permissions=True, **kwargs):
|
||||
adminlog(largs[2], rawnick, s[0], largs[3])
|
||||
return f(*largs) # no questions
|
||||
if owner_only:
|
||||
if var.is_owner(nick):
|
||||
if var.is_owner(nick, cloak):
|
||||
adminlog(largs[2], rawnick, s[0], largs[3])
|
||||
return f(*largs)
|
||||
else:
|
||||
largs[0].notice(nick, "You are not the owner.")
|
||||
return
|
||||
if admin_only:
|
||||
if var.is_admin(nick):
|
||||
if var.is_admin(nick, cloak):
|
||||
adminlog(largs[2], rawnick, s[0], largs[3])
|
||||
return f(*largs)
|
||||
else:
|
||||
|
Loading…
Reference in New Issue
Block a user