From 56f6ea21fecb32d37e2ec37ec13cccabc338e16d Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 14:43:54 -0400 Subject: [PATCH 01/19] build option for regged nicks only --- sopel_modules/SpiceBot/RegNicks.py | 11 +++++++++++ sopel_modules/SpiceBot/configure.py | 4 ++++ sopel_modules/SpiceBot/setup.py | 8 ++++++++ 3 files changed, 23 insertions(+) create mode 100644 sopel_modules/SpiceBot/RegNicks.py diff --git a/sopel_modules/SpiceBot/RegNicks.py b/sopel_modules/SpiceBot/RegNicks.py new file mode 100644 index 0000000..b16e040 --- /dev/null +++ b/sopel_modules/SpiceBot/RegNicks.py @@ -0,0 +1,11 @@ +# coding=utf8 +from __future__ import unicode_literals, absolute_import, division, print_function +""" +This is the SpiceBot regnick system. +""" + +from sopel.config.types import StaticSection, ValidatedAttribute + + +class SpiceBot_RegNicks_MainSection(StaticSection): + announcenew = ValidatedAttribute('regnick', default=False) diff --git a/sopel_modules/SpiceBot/configure.py b/sopel_modules/SpiceBot/configure.py index 9e59a47..40db92e 100644 --- a/sopel_modules/SpiceBot/configure.py +++ b/sopel_modules/SpiceBot/configure.py @@ -13,6 +13,7 @@ from .Reddit import SpiceBot_Reddit_MainSection from .Sherlock import SpiceBot_Sherlock_MainSection from .Kick import SpiceBot_Kick from .osd import SpiceBot_OSD +from .RegNicks import SpiceBot_RegNicks_MainSection def configure(config): @@ -62,3 +63,6 @@ def configure(config): config.define_section("SpiceBot_Sherlock", SpiceBot_Sherlock_MainSection, validate=False) config.SpiceBot_Sherlock.configure_setting('extra', 'SpiceBot_Sherlock API Extra directory') + + config.define_section("SpiceBot_regnick", SpiceBot_RegNicks_MainSection, validate=False) + config.SpiceBot_Channels.configure_setting('regnick', 'SpiceBot_Channels Announce New Channels') diff --git a/sopel_modules/SpiceBot/setup.py b/sopel_modules/SpiceBot/setup.py index f67bbcc..d0f5896 100644 --- a/sopel_modules/SpiceBot/setup.py +++ b/sopel_modules/SpiceBot/setup.py @@ -22,6 +22,7 @@ from .Gif import SpiceBot_Gif_MainSection from .DictComs import SpiceBot_DictComs_MainSection from .Sherlock import SpiceBot_Sherlock_MainSection from .AI import SpiceBot_AI_MainSection +from .RegNicks import SpiceBot_RegNicks_MainSection def setup(bot): @@ -64,6 +65,8 @@ def setup(bot): setup_sherlock(bot) + setup_regnicks(bot) + def setup_config(bot): logs.log('SpiceBot_Config', "Setting Up Configuration") @@ -167,3 +170,8 @@ def setup_dictcoms(bot): def setup_sherlock(bot): bot.config.define_section("SpiceBot_Sherlock", SpiceBot_Sherlock_MainSection, validate=False) + + +def setup_regnicks(bot): + bot.config.define_section("SpiceBot_regnick", SpiceBot_RegNicks_MainSection, validate=False) + botconfig.define_section("SpiceBot_regnick", SpiceBot_RegNicks_MainSection, validate=False) From 9712707d67ef8125788fa79caa390eadc87dc8eb Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 15:22:09 -0400 Subject: [PATCH 02/19] oops --- sopel_modules/SpiceBot/RegNicks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot/RegNicks.py b/sopel_modules/SpiceBot/RegNicks.py index b16e040..e174cb4 100644 --- a/sopel_modules/SpiceBot/RegNicks.py +++ b/sopel_modules/SpiceBot/RegNicks.py @@ -8,4 +8,4 @@ from sopel.config.types import StaticSection, ValidatedAttribute class SpiceBot_RegNicks_MainSection(StaticSection): - announcenew = ValidatedAttribute('regnick', default=False) + regnick = ValidatedAttribute('regnick', default=False) From 017cc48d95e44eda6f99ebb1748653f8ce445ec6 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 16:23:22 -0400 Subject: [PATCH 03/19] check if nicks are regged --- sopel_modules/SpiceBot/Events.py | 1 + sopel_modules/SpiceBot/Users.py | 43 +++++++++++++++++++ sopel_modules/SpiceBot/configure.py | 2 +- .../SpiceBot_Core_Processing/Users.py | 6 +++ 4 files changed, 51 insertions(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot/Events.py b/sopel_modules/SpiceBot/Events.py index a795e92..8024bef 100644 --- a/sopel_modules/SpiceBot/Events.py +++ b/sopel_modules/SpiceBot/Events.py @@ -39,6 +39,7 @@ class BotEvents(object): self.RPL_ISUPPORT = '005' # This is a defined IRC event self.RPL_WHOREPLY = '352' # This is a defined IRC event self.RPL_NAMREPLY = '353' # This is a defined IRC event + self.RPL_WHOISREGNICK = '307' # this is an unrealircd event self.BOT_UPTIME = time.time() self.BOT_WELCOME = '1001' self.BOT_READY = '1002' diff --git a/sopel_modules/SpiceBot/Users.py b/sopel_modules/SpiceBot/Users.py index e944b4f..b55487b 100644 --- a/sopel_modules/SpiceBot/Users.py +++ b/sopel_modules/SpiceBot/Users.py @@ -28,6 +28,7 @@ class BotUsers(): "offline": [], "away": [], "current": {}, + "registered": [], } """during setup, all users from database are offline until marked online""" for user_id in list(self.dict["all"].keys()): @@ -163,6 +164,8 @@ class BotUsers(): return # Identify nick_id = self.whois_ident(trigger.nick) + # check if nick is registered + self.whois_send(bot, trigger.nick) # Verify nick is in the all list self.add_to_all(trigger.nick, nick_id) # Verify nick is in the all list @@ -179,6 +182,8 @@ class BotUsers(): return # Identify nick_id = self.whois_ident(trigger.nick) + # check if nick is registered + self.whois_send(bot, trigger.nick) # Verify nick is in the all list self.add_to_all(trigger.nick, nick_id) # Verify nick is in the all list @@ -195,6 +200,8 @@ class BotUsers(): return # Identify nick_id = self.whois_ident(trigger.nick) + # check if nick is registered + self.whois_send(bot, trigger.nick) # Verify nick is in the all list self.add_to_all(trigger.nick, nick_id) # Verify nick is in the all list @@ -213,6 +220,8 @@ class BotUsers(): return # Identify nick_id = self.whois_ident(trigger.nick) + # check if nick is registered + self.whois_send(bot, trigger.nick) # Verify nick is in the all list self.add_to_all(trigger.nick, nick_id) # Verify nick is in the all list @@ -232,6 +241,8 @@ class BotUsers(): return # Identify nick_id = self.whois_ident(targetnick) + # check if nick is registered + self.whois_send(bot, targetnick) # Verify nick is in the all list self.add_to_all(targetnick, nick_id) # Verify nick is in the all list @@ -247,6 +258,8 @@ class BotUsers(): newnick = Identifier(trigger) if oldnick == bot.nick or newnick == bot.nick: return + # check if nick is registered + self.whois_send(bot, newnick) # Verify nick is in the all list self.add_to_all(oldnick, old_nick_id) # Verify nick is in the all list @@ -297,6 +310,8 @@ class BotUsers(): self.add_channel(channel, nick_id) # mark user as online self.mark_user_online(nick_id) + # check if nick is registered + self.whois_send(bot, nick) def rpl_who(self, bot, trigger): if len(trigger.args) < 2 or trigger.args[1] not in self.who_reqs: @@ -319,6 +334,28 @@ class BotUsers(): self.add_channel(channel, nick_id) # mark user as online self.mark_user_online(nick_id) + # check if nick is registered + self.whois_send(bot, nick) + + def rpl_whois(self, bot, trigger): + if not bot.config.SpiceBot_regnick.regnick: + return + nick = trigger.args[1] + if str(nick).lower() in [x.lower() for x in self.dict["registered"]]: + return + self.whois_handle(nick) + + def whois_handle(self, nick): + self.lock.acquire() + if str(nick).lower() in [x.lower() for x in self.dict["registered"]]: + self.dict["registered"].append(str(nick)) + self.lock.release() + + def whois_send(self, bot, nick): + if not bot.config.SpiceBot_regnick.regnick: + return + if str(nick).lower() not in [x.lower() for x in self.dict["registered"]]: + bot.write(['WHOIS', str(nick)]) def account(self, bot, trigger): # Identify @@ -423,6 +460,12 @@ class BotUsers(): if str(trigger.sender).lower() not in self.dict["current"][nick_id]["channels"]: return {"targetgood": False, "error": "It looks like " + self.nick_actual(target) + " is online right now, but in a different channel.", "reason": "diffchannel"} + # not a registered nick + if "unregged" not in targetbypass: + if bot.config.SpiceBot_regnick.regnick: + if str(nick).lower() not in [x.lower() for x in self.dict["registered"]]: + return {"targetgood": False, "error": "It looks like " + self.nick_actual(target) + " is not a registered nick.", "reason": "unregged"} + return targetgood def random_valid_target(self, bot, trigger, outputtype): diff --git a/sopel_modules/SpiceBot/configure.py b/sopel_modules/SpiceBot/configure.py index 40db92e..1358c01 100644 --- a/sopel_modules/SpiceBot/configure.py +++ b/sopel_modules/SpiceBot/configure.py @@ -65,4 +65,4 @@ def configure(config): config.SpiceBot_Sherlock.configure_setting('extra', 'SpiceBot_Sherlock API Extra directory') config.define_section("SpiceBot_regnick", SpiceBot_RegNicks_MainSection, validate=False) - config.SpiceBot_Channels.configure_setting('regnick', 'SpiceBot_Channels Announce New Channels') + config.SpiceBot_Channels.configure_setting('regnick', 'SpiceBot_regnick Only allow regged nicks') diff --git a/sopel_modules/SpiceBot_Core_Processing/Users.py b/sopel_modules/SpiceBot_Core_Processing/Users.py index 07a7009..eee2e70 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Users.py +++ b/sopel_modules/SpiceBot_Core_Processing/Users.py @@ -80,3 +80,9 @@ def account_notify_users(bot, trigger): @sopel.module.rule('.*') def track_notify_users(bot, trigger): SpiceBot.users.track_notify(bot, trigger) + + +@sopel.module.event(SpiceBot.events.RPL_WHOISREGNICK) +@sopel.module.rule('.*') +def bot_whois_user(bot, trigger): + SpiceBot.users.rpl_whois(bot, trigger) From 7a678788db18be85b642d2d6ca16c52b9d290ee5 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 19:00:45 -0400 Subject: [PATCH 04/19] test --- sopel_modules/SpiceBot/Prerun.py | 8 +++++--- sopel_modules/SpiceBot/Users.py | 8 +++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/sopel_modules/SpiceBot/Prerun.py b/sopel_modules/SpiceBot/Prerun.py index 51521e4..a36bb22 100644 --- a/sopel_modules/SpiceBot/Prerun.py +++ b/sopel_modules/SpiceBot/Prerun.py @@ -36,7 +36,7 @@ def prerun(t_command_type='module', t_command_subtype=None): # Verify channel and user exist verify_channel(trigger) - verify_user(trigger) + verify_user(bot, trigger) botcom = class_create('botcom') @@ -130,7 +130,7 @@ def prerun_query(t_command_type='module', t_command_subtype=None): # Verify channel and user exist verify_channel(trigger) - verify_user(trigger) + verify_user(bot, trigger) botcom = class_create('botcom') @@ -189,9 +189,11 @@ def prerun_query(t_command_type='module', t_command_subtype=None): return actual_decorator -def verify_user(trigger): +def verify_user(bot, trigger): # Identify nick_id = botusers.whois_ident(trigger.nick) + # check if nick is registered + botusers.whois_send(bot, trigger.nick) # Verify nick is in the all list botusers.add_to_all(trigger.nick, nick_id) # Verify nick is in the all list diff --git a/sopel_modules/SpiceBot/Users.py b/sopel_modules/SpiceBot/Users.py index b55487b..c50dae8 100644 --- a/sopel_modules/SpiceBot/Users.py +++ b/sopel_modules/SpiceBot/Users.py @@ -28,7 +28,7 @@ class BotUsers(): "offline": [], "away": [], "current": {}, - "registered": [], + "registered": botdb.get_bot_value('regged_users') or [], } """during setup, all users from database are offline until marked online""" for user_id in list(self.dict["all"].keys()): @@ -73,6 +73,7 @@ class BotUsers(): def save_user_db(self): botdb.set_bot_value('users', self.dict["all"]) + botdb.set_bot_value('regged_users', self.dict["registered"]) def add_to_all(self, nick, nick_id=None): self.lock.acquire() @@ -102,6 +103,8 @@ class BotUsers(): for user in list(bot.channels[channel].privileges.keys()): # Identify nick_id = self.whois_ident(user) + # check if nick is registered + self.whois_send(bot, user) # Verify nick is in the all list self.add_to_all(user, nick_id) # Verify nick is in the all list @@ -151,6 +154,8 @@ class BotUsers(): for user in list(bot.channels[trigger.sender].privileges.keys()): # Identify nick_id = self.whois_ident(user) + # check if nick is registered + self.whois_send(bot, user) # Verify nick is in the all list self.add_to_all(user, nick_id) # Verify nick is in the all list @@ -338,6 +343,7 @@ class BotUsers(): self.whois_send(bot, nick) def rpl_whois(self, bot, trigger): + bot.say(str(trigger.args[1]), "#deathbybandaid") if not bot.config.SpiceBot_regnick.regnick: return nick = trigger.args[1] From 2d4cf72f3eb22bfaf21d51faf4374b7f6547ed4a Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 19:02:50 -0400 Subject: [PATCH 05/19] test --- sopel_modules/SpiceBot/Users.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot/Users.py b/sopel_modules/SpiceBot/Users.py index c50dae8..ddffb11 100644 --- a/sopel_modules/SpiceBot/Users.py +++ b/sopel_modules/SpiceBot/Users.py @@ -343,10 +343,10 @@ class BotUsers(): self.whois_send(bot, nick) def rpl_whois(self, bot, trigger): - bot.say(str(trigger.args[1]), "#deathbybandaid") if not bot.config.SpiceBot_regnick.regnick: return nick = trigger.args[1] + bot.say(nick, "#deathbybandaid") if str(nick).lower() in [x.lower() for x in self.dict["registered"]]: return self.whois_handle(nick) From 8a5bf680c002b2675f781158091aa3bdafa5f71f Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 19:08:37 -0400 Subject: [PATCH 06/19] test --- sopel_modules/SpiceBot/Users.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot/Users.py b/sopel_modules/SpiceBot/Users.py index ddffb11..1adb080 100644 --- a/sopel_modules/SpiceBot/Users.py +++ b/sopel_modules/SpiceBot/Users.py @@ -346,9 +346,9 @@ class BotUsers(): if not bot.config.SpiceBot_regnick.regnick: return nick = trigger.args[1] - bot.say(nick, "#deathbybandaid") if str(nick).lower() in [x.lower() for x in self.dict["registered"]]: return + bot.say(nick, "#deathbybandaid") self.whois_handle(nick) def whois_handle(self, nick): From 35c7686ba8a9b30262f72ffe0e0de264d58119f6 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 19:10:51 -0400 Subject: [PATCH 07/19] not --- sopel_modules/SpiceBot/Users.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot/Users.py b/sopel_modules/SpiceBot/Users.py index 1adb080..545c807 100644 --- a/sopel_modules/SpiceBot/Users.py +++ b/sopel_modules/SpiceBot/Users.py @@ -348,12 +348,11 @@ class BotUsers(): nick = trigger.args[1] if str(nick).lower() in [x.lower() for x in self.dict["registered"]]: return - bot.say(nick, "#deathbybandaid") self.whois_handle(nick) def whois_handle(self, nick): self.lock.acquire() - if str(nick).lower() in [x.lower() for x in self.dict["registered"]]: + if str(nick).lower() not in [x.lower() for x in self.dict["registered"]]: self.dict["registered"].append(str(nick)) self.lock.release() From 3aa829314fd4535ce64cc176fd7ba4fecb83f4b4 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 19:21:25 -0400 Subject: [PATCH 08/19] regnick command --- .../SpiceBot_Core_Commands/RegNick.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 sopel_modules/SpiceBot_Core_Commands/RegNick.py diff --git a/sopel_modules/SpiceBot_Core_Commands/RegNick.py b/sopel_modules/SpiceBot_Core_Commands/RegNick.py new file mode 100644 index 0000000..e0a31d3 --- /dev/null +++ b/sopel_modules/SpiceBot_Core_Commands/RegNick.py @@ -0,0 +1,22 @@ +# coding=utf8 +from __future__ import unicode_literals, absolute_import, division, print_function +""" +This is the SpiceBot Users system. +""" +import sopel + +import sopel_modules.SpiceBot as SpiceBot +from sopel_modules.spicemanip import spicemanip + + +@SpiceBot.prerun('nickname') +@sopel.module.nickname_commands('regnicks', 'regnick') +def nickname_comand_regnicks(bot, trigger, botcom): + reggedusers = SpiceBot.users.dict["registered"] + bot.osd("These users are registered " + spicemanip(reggedusers, 'andlist') + ".", trigger.sender, 'notice') + notregged = [] + for user in SpiceBot.users.dict["online"]: + usernick = SpiceBot.users.ID(user) + if str(usernick).lower() in [x.lower() for x in SpiceBot.userself.dict["registered"]]: + notregged.append(usernick) + bot.osd("These online users are not registered " + spicemanip(notregged, 'andlist') + ".", trigger.sender, 'notice') From 58d67318f126513417bcd2a3d2ce8d38240ccef5 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 19:22:35 -0400 Subject: [PATCH 09/19] adjust --- sopel_modules/SpiceBot_Core_Commands/RegNick.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Core_Commands/RegNick.py b/sopel_modules/SpiceBot_Core_Commands/RegNick.py index e0a31d3..b4eb962 100644 --- a/sopel_modules/SpiceBot_Core_Commands/RegNick.py +++ b/sopel_modules/SpiceBot_Core_Commands/RegNick.py @@ -1,7 +1,7 @@ # coding=utf8 from __future__ import unicode_literals, absolute_import, division, print_function """ -This is the SpiceBot Users system. +This is the SpiceBot regnicks system. """ import sopel From 8a868f91cabe60dba61290b0d8e3297ba116cd17 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 19:23:11 -0400 Subject: [PATCH 10/19] tets --- sopel_modules/SpiceBot_Core_Commands/RegNick.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot_Core_Commands/RegNick.py b/sopel_modules/SpiceBot_Core_Commands/RegNick.py index b4eb962..b2a2506 100644 --- a/sopel_modules/SpiceBot_Core_Commands/RegNick.py +++ b/sopel_modules/SpiceBot_Core_Commands/RegNick.py @@ -13,10 +13,10 @@ from sopel_modules.spicemanip import spicemanip @sopel.module.nickname_commands('regnicks', 'regnick') def nickname_comand_regnicks(bot, trigger, botcom): reggedusers = SpiceBot.users.dict["registered"] - bot.osd("These users are registered " + spicemanip(reggedusers, 'andlist') + ".", trigger.sender, 'notice') + bot.osd("These users are registered " + spicemanip(reggedusers, 'andlist') + ".") notregged = [] for user in SpiceBot.users.dict["online"]: usernick = SpiceBot.users.ID(user) if str(usernick).lower() in [x.lower() for x in SpiceBot.userself.dict["registered"]]: notregged.append(usernick) - bot.osd("These online users are not registered " + spicemanip(notregged, 'andlist') + ".", trigger.sender, 'notice') + bot.osd("These online users are not registered " + spicemanip(notregged, 'andlist') + ".") From f77093c377c00a48c636e2d359d8ead428696e45 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 19:25:02 -0400 Subject: [PATCH 11/19] imprts --- sopel_modules/SpiceBot/__init__.py | 1 + sopel_modules/SpiceBot_Core_Commands/__init__.py | 1 + 2 files changed, 2 insertions(+) diff --git a/sopel_modules/SpiceBot/__init__.py b/sopel_modules/SpiceBot/__init__.py index e5c42bc..c104d04 100644 --- a/sopel_modules/SpiceBot/__init__.py +++ b/sopel_modules/SpiceBot/__init__.py @@ -38,6 +38,7 @@ from .DictComs import * from .Read import * from .Translate import * from .Version import * +from .RegNick import * __author__ = 'Sam Zick' diff --git a/sopel_modules/SpiceBot_Core_Commands/__init__.py b/sopel_modules/SpiceBot_Core_Commands/__init__.py index 009efa8..83a5757 100644 --- a/sopel_modules/SpiceBot_Core_Commands/__init__.py +++ b/sopel_modules/SpiceBot_Core_Commands/__init__.py @@ -23,6 +23,7 @@ from .AI import * from .DictComs import * from .TODO import * from .Version import * +from .RegNick import * __author__ = 'Sam Zick' __email__ = 'sam@deathbybandaid.net' From 85a02f8554a30b22cd370912d396089963b841de Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 19:26:41 -0400 Subject: [PATCH 12/19] s --- sopel_modules/SpiceBot/__init__.py | 2 +- .../SpiceBot_Core_Commands/{RegNick.py => RegNicks.py} | 0 sopel_modules/SpiceBot_Core_Commands/__init__.py | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename sopel_modules/SpiceBot_Core_Commands/{RegNick.py => RegNicks.py} (100%) diff --git a/sopel_modules/SpiceBot/__init__.py b/sopel_modules/SpiceBot/__init__.py index c104d04..13a8f1f 100644 --- a/sopel_modules/SpiceBot/__init__.py +++ b/sopel_modules/SpiceBot/__init__.py @@ -38,7 +38,7 @@ from .DictComs import * from .Read import * from .Translate import * from .Version import * -from .RegNick import * +from .RegNicks import * __author__ = 'Sam Zick' diff --git a/sopel_modules/SpiceBot_Core_Commands/RegNick.py b/sopel_modules/SpiceBot_Core_Commands/RegNicks.py similarity index 100% rename from sopel_modules/SpiceBot_Core_Commands/RegNick.py rename to sopel_modules/SpiceBot_Core_Commands/RegNicks.py diff --git a/sopel_modules/SpiceBot_Core_Commands/__init__.py b/sopel_modules/SpiceBot_Core_Commands/__init__.py index 83a5757..fbf890c 100644 --- a/sopel_modules/SpiceBot_Core_Commands/__init__.py +++ b/sopel_modules/SpiceBot_Core_Commands/__init__.py @@ -23,7 +23,7 @@ from .AI import * from .DictComs import * from .TODO import * from .Version import * -from .RegNick import * +from .RegNicks import * __author__ = 'Sam Zick' __email__ = 'sam@deathbybandaid.net' From ba03e796766ab5d65746327adc052572b1754ca8 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 19:27:49 -0400 Subject: [PATCH 13/19] test --- sopel_modules/SpiceBot_Core_Commands/RegNicks.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sopel_modules/SpiceBot_Core_Commands/RegNicks.py b/sopel_modules/SpiceBot_Core_Commands/RegNicks.py index b2a2506..19196b1 100644 --- a/sopel_modules/SpiceBot_Core_Commands/RegNicks.py +++ b/sopel_modules/SpiceBot_Core_Commands/RegNicks.py @@ -13,10 +13,10 @@ from sopel_modules.spicemanip import spicemanip @sopel.module.nickname_commands('regnicks', 'regnick') def nickname_comand_regnicks(bot, trigger, botcom): reggedusers = SpiceBot.users.dict["registered"] - bot.osd("These users are registered " + spicemanip(reggedusers, 'andlist') + ".") + bot.osd("These users are registered " + spicemanip(reggedusers, 'andlist') + ".", trigger.sender, 'notice') notregged = [] for user in SpiceBot.users.dict["online"]: usernick = SpiceBot.users.ID(user) - if str(usernick).lower() in [x.lower() for x in SpiceBot.userself.dict["registered"]]: + if str(usernick).lower() in [x.lower() for x in SpiceBot.users.dict["registered"]]: notregged.append(usernick) - bot.osd("These online users are not registered " + spicemanip(notregged, 'andlist') + ".") + bot.osd("These online users are not registered " + spicemanip(notregged, 'andlist') + ".", trigger.sender, 'notice') From a045b9339c05aaf3da0f337bda82fbb208ae723d Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 19:29:56 -0400 Subject: [PATCH 14/19] not --- sopel_modules/SpiceBot_Core_Commands/RegNicks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Core_Commands/RegNicks.py b/sopel_modules/SpiceBot_Core_Commands/RegNicks.py index 19196b1..645ccf3 100644 --- a/sopel_modules/SpiceBot_Core_Commands/RegNicks.py +++ b/sopel_modules/SpiceBot_Core_Commands/RegNicks.py @@ -17,6 +17,6 @@ def nickname_comand_regnicks(bot, trigger, botcom): notregged = [] for user in SpiceBot.users.dict["online"]: usernick = SpiceBot.users.ID(user) - if str(usernick).lower() in [x.lower() for x in SpiceBot.users.dict["registered"]]: + if str(usernick).lower() not in [x.lower() for x in SpiceBot.users.dict["registered"]]: notregged.append(usernick) bot.osd("These online users are not registered " + spicemanip(notregged, 'andlist') + ".", trigger.sender, 'notice') From ce1f4cdbeda61f3b8d8f8ea4e6bc2ec7e4f80440 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 19:31:06 -0400 Subject: [PATCH 15/19] test --- sopel_modules/SpiceBot_Core_Commands/RegNicks.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Core_Commands/RegNicks.py b/sopel_modules/SpiceBot_Core_Commands/RegNicks.py index 645ccf3..61bd66a 100644 --- a/sopel_modules/SpiceBot_Core_Commands/RegNicks.py +++ b/sopel_modules/SpiceBot_Core_Commands/RegNicks.py @@ -18,5 +18,6 @@ def nickname_comand_regnicks(bot, trigger, botcom): for user in SpiceBot.users.dict["online"]: usernick = SpiceBot.users.ID(user) if str(usernick).lower() not in [x.lower() for x in SpiceBot.users.dict["registered"]]: - notregged.append(usernick) + if usernick != bot.nick: + notregged.append(usernick) bot.osd("These online users are not registered " + spicemanip(notregged, 'andlist') + ".", trigger.sender, 'notice') From 600de156894fd5a7cfd2154e0b8242a544cbe0ab Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 19:37:28 -0400 Subject: [PATCH 16/19] prerun --- sopel_modules/SpiceBot/Prerun.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sopel_modules/SpiceBot/Prerun.py b/sopel_modules/SpiceBot/Prerun.py index a36bb22..7d34fe3 100644 --- a/sopel_modules/SpiceBot/Prerun.py +++ b/sopel_modules/SpiceBot/Prerun.py @@ -38,6 +38,11 @@ def prerun(t_command_type='module', t_command_subtype=None): verify_channel(trigger) verify_user(bot, trigger) + # Stop here if not registered + if bot.config.SpiceBot_regnick.regnick: + if str(trigger.nick).lower() not in [x.lower() for x in botusers.dict["registered"]]: + return + botcom = class_create('botcom') if t_command_type == "nickname": @@ -132,6 +137,11 @@ def prerun_query(t_command_type='module', t_command_subtype=None): verify_channel(trigger) verify_user(bot, trigger) + # Stop here if not registered + if bot.config.SpiceBot_regnick.regnick: + if str(trigger.nick).lower() not in [x.lower() for x in botusers.dict["registered"]]: + return + botcom = class_create('botcom') if t_command_type == "nickname": From e5363c6c3ec14e33fcd11a3cb4da43e9bc477998 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 19:47:31 -0400 Subject: [PATCH 17/19] prerun output --- sopel_modules/SpiceBot/Prerun.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/sopel_modules/SpiceBot/Prerun.py b/sopel_modules/SpiceBot/Prerun.py index 7d34fe3..066dad0 100644 --- a/sopel_modules/SpiceBot/Prerun.py +++ b/sopel_modules/SpiceBot/Prerun.py @@ -38,11 +38,6 @@ def prerun(t_command_type='module', t_command_subtype=None): verify_channel(trigger) verify_user(bot, trigger) - # Stop here if not registered - if bot.config.SpiceBot_regnick.regnick: - if str(trigger.nick).lower() not in [x.lower() for x in botusers.dict["registered"]]: - return - botcom = class_create('botcom') if t_command_type == "nickname": @@ -137,11 +132,6 @@ def prerun_query(t_command_type='module', t_command_subtype=None): verify_channel(trigger) verify_user(bot, trigger) - # Stop here if not registered - if bot.config.SpiceBot_regnick.regnick: - if str(trigger.nick).lower() not in [x.lower() for x in botusers.dict["registered"]]: - return - botcom = class_create('botcom') if t_command_type == "nickname": @@ -295,6 +285,12 @@ def trigger_runstatus_query(bot, trigger, botcom): botmessagelog.messagelog_error(botcom.dict["log_id"], "The admin switch (-a) is for use by authorized nicks ONLY.") return False + # Stop here if not registered + if bot.config.SpiceBot_regnick.regnick: + if str(trigger.nick).lower() not in [x.lower() for x in botusers.dict["registered"]]: + message = "The query command requires you to be registerd with IRC services." + return trigger_cant_run(bot, trigger, botcom, message) + # don't run commands that are disabled in channels if not trigger.is_privmsg: channel_disabled_list = botcommands.get_commands_disabled(str(trigger.sender)) @@ -346,6 +342,12 @@ def trigger_runstatus(bot, trigger, botcom): botmessagelog.messagelog_error(botcom.dict["log_id"], "The admin switch (-a) is for use by authorized nicks ONLY.") return False + # Stop here if not registered + if bot.config.SpiceBot_regnick.regnick: + if str(trigger.nick).lower() not in [x.lower() for x in botusers.dict["registered"]]: + message = "The " + str(botcom.dict["comtext"]) + " command requires you to be registerd with IRC services." + return trigger_cant_run(bot, trigger, botcom, message) + # if botcom.dict["hyphen_arg"]: # return False From 6ab8169d76f9c1e8b4724bd20e0ff6a4c9bd0725 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 20:06:12 -0400 Subject: [PATCH 18/19] 4 minute whois timeout --- sopel_modules/SpiceBot/Users.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sopel_modules/SpiceBot/Users.py b/sopel_modules/SpiceBot/Users.py index 545c807..0fc51ea 100644 --- a/sopel_modules/SpiceBot/Users.py +++ b/sopel_modules/SpiceBot/Users.py @@ -12,6 +12,7 @@ from sopel_modules.spicemanip import spicemanip import threading import re +import time # TODO timestamp for new .seen @@ -29,6 +30,7 @@ class BotUsers(): "away": [], "current": {}, "registered": botdb.get_bot_value('regged_users') or [], + "notregistered": {}, } """during setup, all users from database are offline until marked online""" for user_id in list(self.dict["all"].keys()): @@ -354,11 +356,17 @@ class BotUsers(): self.lock.acquire() if str(nick).lower() not in [x.lower() for x in self.dict["registered"]]: self.dict["registered"].append(str(nick)) + else: + self.dict["notregistered"][str(nick).lower()] = time.time() self.lock.release() def whois_send(self, bot, nick): if not bot.config.SpiceBot_regnick.regnick: return + if str(nick).lower() in [x.lower() for x in list(self.dict["notregistered"].keys())]: + timestamp = self.dict["notregistered"][str(nick).lower()] + if time.time() - timestamp < 240: + return if str(nick).lower() not in [x.lower() for x in self.dict["registered"]]: bot.write(['WHOIS', str(nick)]) From 349bc71273a01917bb148337be7e326437baaa5f Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Tue, 17 Sep 2019 20:08:09 -0400 Subject: [PATCH 19/19] update text --- sopel_modules/SpiceBot/Prerun.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot/Prerun.py b/sopel_modules/SpiceBot/Prerun.py index 066dad0..5598c35 100644 --- a/sopel_modules/SpiceBot/Prerun.py +++ b/sopel_modules/SpiceBot/Prerun.py @@ -288,7 +288,7 @@ def trigger_runstatus_query(bot, trigger, botcom): # Stop here if not registered if bot.config.SpiceBot_regnick.regnick: if str(trigger.nick).lower() not in [x.lower() for x in botusers.dict["registered"]]: - message = "The query command requires you to be registerd with IRC services." + message = "The query command requires you to be registerd with IRC services. Registering may take a few minutes to process with the bot." return trigger_cant_run(bot, trigger, botcom, message) # don't run commands that are disabled in channels @@ -345,7 +345,7 @@ def trigger_runstatus(bot, trigger, botcom): # Stop here if not registered if bot.config.SpiceBot_regnick.regnick: if str(trigger.nick).lower() not in [x.lower() for x in botusers.dict["registered"]]: - message = "The " + str(botcom.dict["comtext"]) + " command requires you to be registerd with IRC services." + message = "The " + str(botcom.dict["comtext"]) + " command requires you to be registerd with IRC services. Registering may take a few minutes to process with the bot." return trigger_cant_run(bot, trigger, botcom, message) # if botcom.dict["hyphen_arg"]: