From ed260e662693e17e6362dbb8d60805d3f3619835 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Fri, 7 Jun 2019 19:11:02 -0400 Subject: [PATCH] user and channel scanning --- sopel_modules/SpiceBot/Channels.py | 5 ++++ sopel_modules/SpiceBot/Users.py | 25 +++++++++++++++---- .../SpiceBot_Core_Processing/Channels.py | 7 ++++++ .../SpiceBot_Core_Processing/Users.py | 7 ++++++ 4 files changed, 39 insertions(+), 5 deletions(-) diff --git a/sopel_modules/SpiceBot/Channels.py b/sopel_modules/SpiceBot/Channels.py index 8f6710f..e1ae109 100644 --- a/sopel_modules/SpiceBot/Channels.py +++ b/sopel_modules/SpiceBot/Channels.py @@ -129,6 +129,11 @@ class BotChannels(): self.dict['list'][channel.lower()]['users'] = [] self.dict['list'][channel.lower()]['users'] = [] + def channel_scan(self, bot): + for channel in bot.channels.keys(): + for user in bot.channels[channel].privileges.keys(): + self.add_to_channel(channel, user) + def join(self, bot, trigger): # bot block if trigger.nick == bot.nick: diff --git a/sopel_modules/SpiceBot/Users.py b/sopel_modules/SpiceBot/Users.py index cf61d09..3f508ba 100644 --- a/sopel_modules/SpiceBot/Users.py +++ b/sopel_modules/SpiceBot/Users.py @@ -50,8 +50,27 @@ class BotUsers(): if nick_id not in self.current.keys(): self.current[nick_id] = {"channels": [], "nick": nick} + def channel_scan(self, bot): + for channel in bot.channels.keys(): + for user in bot.channels[channel].privileges.keys(): + # Identify + nick_id = self.whois_id(user) + # Verify nick is in the all list + self.add_to_all(user, nick_id) + # Verify nick is in the all list + self.add_to_current(user, nick_id) + # set current nick + self.current[nick_id]["nick"] = user + # add joined channel to nick list + if channel not in self.current[nick_id]["channels"]: + self.current[nick_id]["channels"].append(channel) + # mark user as online + if nick_id not in self.online: + self.online.append(nick_id) + if nick_id in self.offline: + self.offline.remove(nick_id) + def join(self, bot, trigger): - # bot block if trigger.nick == bot.nick: for user in bot.channels[trigger.sender].privileges.keys(): # Identify @@ -89,7 +108,6 @@ class BotUsers(): self.offline.remove(nick_id) def quit(self, bot, trigger): - # bot block if trigger.nick == bot.nick: return # Identify @@ -109,7 +127,6 @@ class BotUsers(): self.offline.append(nick_id) def part(self, bot, trigger): - # bot block if trigger.nick == bot.nick: for nick_id in self.current.keys(): if trigger.sender in self.current[nick_id]["channels"]: @@ -137,7 +154,6 @@ class BotUsers(): def kick(self, bot, trigger): targetnick = Identifier(str(trigger.args[1])) - # bot block if targetnick == bot.nick: for nick_id in self.current.keys(): if trigger.sender in self.current[nick_id]["channels"]: @@ -165,7 +181,6 @@ class BotUsers(): def nick(self, bot, trigger): newnick = Identifier(trigger) - # bot block if trigger.nick == bot.nick or newnick == bot.nick: return # alias the nick diff --git a/sopel_modules/SpiceBot_Core_Processing/Channels.py b/sopel_modules/SpiceBot_Core_Processing/Channels.py index dd01c94..b4ca4d4 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Channels.py +++ b/sopel_modules/SpiceBot_Core_Processing/Channels.py @@ -132,3 +132,10 @@ def channels_users_nick(bot, trigger): def channels_users_mode(bot, trigger): SpiceBot.channels.mode(bot, trigger) # TODO + + +@sopel.module.event(SpiceBot.events.BOT_CONNECTED) +@sopel.module.rule('.*') +def bot_channelscan(bot, trigger): + while True: + SpiceBot.channels.channel_scan(bot) diff --git a/sopel_modules/SpiceBot_Core_Processing/Users.py b/sopel_modules/SpiceBot_Core_Processing/Users.py index 5f8dc47..3080126 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Users.py +++ b/sopel_modules/SpiceBot_Core_Processing/Users.py @@ -43,3 +43,10 @@ def users_nick(bot, trigger): def users_mode(bot, trigger): SpiceBot.users.mode(bot, trigger) # TODO + + +@sopel.module.event(SpiceBot.events.BOT_CONNECTED) +@sopel.module.rule('.*') +def bot_channelscan_users(bot, trigger): + while True: + SpiceBot.users.channel_scan(bot)