def is_user_notice(nick): if nick in var.USERS and var.USERS[nick]["account"] and var.USERS[nick]["account"] != "*" and not var.DISABLE_ACCOUNTS: if var.USERS[nick]["account"] in var.PREFER_NOTICE_ACCS: return True if nick in var.USERS and not var.ACCOUNTS_ONLY: ident = var.USERS[nick]["ident"] host = var.USERS[nick]["host"] for hostmask in var.PREFER_NOTICE: if var.match_hostmask(hostmask, nick, ident, host): return True return False
def is_user_notice(nick): if nick in var.USERS and var.USERS[nick]["account"] and var.USERS[nick][ "account"] != "*" and not var.DISABLE_ACCOUNTS: if var.USERS[nick]["account"] in var.PREFER_NOTICE_ACCS: return True if nick in var.USERS and not var.ACCOUNTS_ONLY: ident = var.USERS[nick]["ident"] host = var.USERS[nick]["host"] for hostmask in var.PREFER_NOTICE: if var.match_hostmask(hostmask, nick, ident, host): return True return False
def is_user_simple(nick): if nick in var.USERS: ident = var.USERS[nick]["ident"] host = var.USERS[nick]["host"] acc = var.USERS[nick]["account"] else: return False if acc and acc != "*" and not var.DISABLE_ACCOUNTS: if acc in var.SIMPLE_NOTIFY_ACCS: return True return False elif not var.ACCOUNTS_ONLY: for hostmask in var.SIMPLE_NOTIFY: if var.match_hostmask(hostmask, nick, ident, host): return True return False
def caller(self, *args): largs = list(args) cli, rawnick, chan, rest = largs nick, mode, ident, host = parse_nick(rawnick) if ident is None: ident = "" if host is None: host = "" if not self.raw_nick: largs[1] = nick if not self.pm and chan == nick: return # PM command, not allowed if not self.chan and chan != nick: return # channel command, not allowed if chan.startswith("#") and chan != botconfig.CHANNEL and not (self.admin_only or self.owner_only): if "" in self.cmds: return # don't have empty commands triggering in other channels for command in self.cmds: if command in botconfig.ALLOWED_ALT_CHANNELS_COMMANDS: break else: return if nick in var.USERS and var.USERS[nick]["account"] != "*": acc = var.USERS[nick]["account"] else: acc = None if "" in self.cmds: return self.func(*largs) if self.phases and var.PHASE not in self.phases: return if self.playing and (nick not in var.list_players() or nick in var.DISCONNECTED): if chan == nick: pm(cli, nick, messages["player_not_playing"]) else: cli.notice(nick, messages["player_not_playing"]) return if self.silenced and nick in var.SILENCED: if chan == nick: pm(cli, nick, messages["silenced"]) else: cli.notice(nick, messages["silenced"]) return if self.roles: for role in self.roles: if nick in var.ROLES[role]: break else: return return self.func(*largs) # don't check restrictions for role commands forced_owner_only = False if hasattr(botconfig, "OWNERS_ONLY_COMMANDS"): for command in self.cmds: if command in botconfig.OWNERS_ONLY_COMMANDS: forced_owner_only = True break if self.owner_only or forced_owner_only: if var.is_owner(nick, ident, host): adminlog(chan, rawnick, self.name, rest) return self.func(*largs) if chan == nick: pm(cli, nick, messages["not_owner"]) else: cli.notice(nick, messages["not_owner"]) return if var.is_admin(nick, ident, host): if self.admin_only: adminlog(chan, rawnick, self.name, rest) return self.func(*largs) if not var.DISABLE_ACCOUNTS and acc: if acc in var.DENY_ACCOUNTS: for command in self.cmds: if command in var.DENY_ACCOUNTS[acc]: if chan == nick: pm(cli, nick, messages["invalid_permissions"]) else: cli.notice(nick, messages["invalid_permissions"]) return if acc in var.ALLOW_ACCOUNTS: for command in self.cmds: if command in var.ALLOW_ACCOUNTS[acc]: if self.admin_only: adminlog(chan, rawnick, self.name, rest) return self.func(*largs) if host: for pattern in var.DENY: if var.match_hostmask(pattern, nick, ident, host): for command in self.cmds: if command in var.DENY[pattern]: if chan == nick: pm(cli, nick, messages["invalid_permissions"]) else: cli.notice(nick, messages["invalid_permissions"]) return for pattern in var.ALLOW: if var.match_hostmask(pattern, nick, ident, host): for command in self.cmds: if command in var.ALLOW[pattern]: if self.admin_only: adminlog(chan, rawnick, self.name, rest) return self.func(*largs) if self.admin_only: if chan == nick: pm(cli, nick, messages["not_an_admin"]) else: cli.notice(nick, messages["not_an_admin"]) return return self.func(*largs)
def caller(self, *args): largs = list(args) cli, rawnick, chan, rest = largs nick, mode, ident, host = parse_nick(rawnick) if ident is None: ident = "" if host is None: host = "" if not self.raw_nick: largs[1] = nick if not self.pm and chan == nick: return # PM command, not allowed if not self.chan and chan != nick: return # channel command, not allowed if chan.startswith("#") and chan != botconfig.CHANNEL and not (self.admin_only or self.owner_only): if "" in self.cmds: return # don't have empty commands triggering in other channels for command in self.cmds: if command in botconfig.ALLOWED_ALT_CHANNELS_COMMANDS: break else: return if nick in var.USERS and var.USERS[nick]["account"] != "*": acc = var.USERS[nick]["account"] else: acc = None if "" in self.cmds: return self.func(*largs) if self.phases and var.PHASE not in self.phases: return if self.playing and (nick not in var.list_players() or nick in var.DISCONNECTED): if chan == nick: pm(cli, nick, "You're not currently playing.") else: cli.notice(nick, "You're not currently playing.") return if self.silenced and nick in var.SILENCED: if chan == nick: pm(cli, nick, "You have been silenced, and are unable to use any special powers.") else: cli.notice(nick, "You have been silenced, and are unable to use any special powers.") return if self.roles: for role in self.roles: if nick in var.ROLES[role]: break else: return return self.func(*largs) # don't check restrictions for role commands if self.owner_only: if var.is_owner(nick, ident, host): adminlog(chan, rawnick, self.name, rest) return self.func(*largs) if chan == nick: pm(cli, nick, "You are not the owner.") else: cli.notice(nick, "You are not the owner.") return if var.is_admin(nick, ident, host): if self.admin_only: adminlog(chan, rawnick, self.name, rest) return self.func(*largs) if not var.DISABLE_ACCOUNTS and acc: if acc in var.DENY_ACCOUNTS: for command in self.cmds: if command in var.DENY_ACCOUNTS[acc]: if chan == nick: pm(cli, nick, "You do not have permission to use that command.") else: cli.notice(nick, "You do not have permission to use that command.") return if acc in var.ALLOW_ACCOUNTS: for command in self.cmds: if command in var.ALLOW_ACCOUNTS[acc]: if self.admin_only: adminlog(chan, rawnick, self.name, rest) return self.func(*largs) if not var.ACCOUNTS_ONLY and host: for pattern in var.DENY: if var.match_hostmask(pattern, nick, ident, host): for command in self.cmds: if command in var.DENY[pattern]: if chan == nick: pm(cli, nick, "You do not have permission to use that command.") else: cli.notice(nick, "You do not have permission to use that command.") return for pattern in var.ALLOW: if var.match_hostmask(pattern, nick, ident, host): for command in self.cmds: if command in var.ALLOW[pattern]: if self.admin_only: adminlog(chan, rawnick, self.name, rest) return self.func(*largs) if self.admin_only: if chan == nick: pm(cli, nick, "You are not an admin.") else: cli.notice(nick, "You are not an admin.") return return self.func(*largs)
def caller(self, *args): largs = list(args) cli, rawnick, chan, rest = largs nick, mode, ident, host = parse_nick(rawnick) if ident is None: ident = "" if host is None: host = "" if not self.raw_nick: largs[1] = nick if not self.pm and chan == nick: return # PM command, not allowed if not self.chan and chan != nick: return # channel command, not allowed if chan.startswith("#") and chan != botconfig.CHANNEL and not ( self.admin_only or self.owner_only): if "" in self.cmds: return # don't have empty commands triggering in other channels for command in self.cmds: if command in botconfig.ALLOWED_ALT_CHANNELS_COMMANDS: break else: return if nick in var.USERS and var.USERS[nick]["account"] != "*": acc = var.USERS[nick]["account"] else: acc = None if "" in self.cmds: return self.func(*largs) if self.phases and var.PHASE not in self.phases: return if self.playing and (nick not in var.list_players() or nick in var.DISCONNECTED): if chan == nick: pm(cli, nick, "You're not currently playing.") else: cli.notice(nick, "You're not currently playing.") return if self.silenced and nick in var.SILENCED: if chan == nick: pm( cli, nick, "You have been silenced, and are unable to use any special powers." ) else: cli.notice( nick, "You have been silenced, and are unable to use any special powers." ) return if self.roles: for role in self.roles: if nick in var.ROLES[role]: break else: return return self.func( *largs) # don't check restrictions for role commands if self.owner_only: if var.is_owner(nick, ident, host): adminlog(chan, rawnick, self.name, rest) return self.func(*largs) if chan == nick: pm(cli, nick, "You are not the owner.") else: cli.notice(nick, "You are not the owner.") return if var.is_admin(nick, ident, host): if self.admin_only: adminlog(chan, rawnick, self.name, rest) return self.func(*largs) if not var.DISABLE_ACCOUNTS and acc: if acc in var.DENY_ACCOUNTS: for command in self.cmds: if command in var.DENY_ACCOUNTS[acc]: if chan == nick: pm( cli, nick, "You do not have permission to use that command." ) else: cli.notice( nick, "You do not have permission to use that command." ) return if acc in var.ALLOW_ACCOUNTS: for command in self.cmds: if command in var.ALLOW_ACCOUNTS[acc]: if self.admin_only: adminlog(chan, rawnick, self.name, rest) return self.func(*largs) if not var.ACCOUNTS_ONLY and host: for pattern in var.DENY: if var.match_hostmask(pattern, nick, ident, host): for command in self.cmds: if command in var.DENY[pattern]: if chan == nick: pm( cli, nick, "You do not have permission to use that command." ) else: cli.notice( nick, "You do not have permission to use that command." ) return for pattern in var.ALLOW: if var.match_hostmask(pattern, nick, ident, host): for command in self.cmds: if command in var.ALLOW[pattern]: if self.admin_only: adminlog(chan, rawnick, self.name, rest) return self.func(*largs) if self.admin_only: if chan == nick: pm(cli, nick, "You are not an admin.") else: cli.notice(nick, "You are not an admin.") return return self.func(*largs)