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