From 60de9616c8d45bd31fd5c8d7e3f43d62f5736c29 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sat, 18 May 2019 20:19:57 -0400 Subject: [PATCH] a bunch of events changes --- sopel_modules/SpiceBot/Events.py | 20 +++-- .../Channels_Parsing.py | 4 +- sopel_modules/SpiceBot_Events/Connected.py | 19 +++++ sopel_modules/SpiceBot_Events/Events.py | 79 ------------------- sopel_modules/SpiceBot_Events/Loaded.py | 15 ++++ sopel_modules/SpiceBot_Events/Logging.py | 15 ++++ sopel_modules/SpiceBot_Events/Queue.py | 19 +++++ sopel_modules/SpiceBot_Events/Ready.py | 14 ++++ sopel_modules/SpiceBot_Events/Welcome.py | 15 ++++ sopel_modules/SpiceBot_Events/__init__.py | 7 +- sopel_modules/SpiceBot_Logs/Queue.py | 2 +- .../StartupMonologue_Display.py | 3 +- 12 files changed, 120 insertions(+), 92 deletions(-) create mode 100644 sopel_modules/SpiceBot_Events/Connected.py delete mode 100644 sopel_modules/SpiceBot_Events/Events.py create mode 100644 sopel_modules/SpiceBot_Events/Loaded.py create mode 100644 sopel_modules/SpiceBot_Events/Logging.py create mode 100644 sopel_modules/SpiceBot_Events/Queue.py create mode 100644 sopel_modules/SpiceBot_Events/Ready.py create mode 100644 sopel_modules/SpiceBot_Events/Welcome.py diff --git a/sopel_modules/SpiceBot/Events.py b/sopel_modules/SpiceBot/Events.py index f6b9f39..16e9a87 100644 --- a/sopel_modules/SpiceBot/Events.py +++ b/sopel_modules/SpiceBot/Events.py @@ -47,18 +47,22 @@ class BotEvents(object): return str(eventnumber) def trigger(self, bot, number, message="SpiceBot_Events"): - number = str(number) + pretriggerdict = {"number": str(number), "message": message} if number in self.defaultevents or self.check(self.BOT_CONNECTED): - pretrigger = sopel.trigger.PreTrigger( - bot.nick, - ":SpiceBot_Events " + number + " " + str(bot.nick) + " :" + message - ) - bot.dispatch(pretrigger) - self.recieved({"number": number, "message": message}) + self.dispatch(bot, pretriggerdict) else: - pretriggerdict = {"number": number, "message": message} self.SpiceBot_Events["trigger_queue"].append(pretriggerdict) + def dispatch(self, bot, pretriggerdict): + number = pretriggerdict["number"] + message = pretriggerdict["message"] + pretrigger = sopel.trigger.PreTrigger( + bot.nick, + ":SpiceBot_Events " + str(number) + " " + str(bot.nick) + " :" + message + ) + bot.dispatch(pretrigger) + self.recieved({"number": number, "message": message}) + def recieved(self, trigger): if isinstance(trigger, dict): eventnumber = str(trigger["number"]) diff --git a/sopel_modules/SpiceBot_Channels_Parsing/Channels_Parsing.py b/sopel_modules/SpiceBot_Channels_Parsing/Channels_Parsing.py index 1b469f5..ef22e3d 100644 --- a/sopel_modules/SpiceBot_Channels_Parsing/Channels_Parsing.py +++ b/sopel_modules/SpiceBot_Channels_Parsing/Channels_Parsing.py @@ -36,14 +36,14 @@ def setup(bot): bot.config.define_section("SpiceBot_Channels", SpiceBot_Channels_MainSection, validate=False) -@sopel.module.event('001') +@sopel.module.event(botevents.RPL_WELCOME) @sopel.module.rule('.*') def unkickable_bot(bot, trigger): if bot.config.SpiceBot_Channels.operadmin: bot.write(('SAMODE', bot.nick, '+q')) -@sopel.module.event('001') +@sopel.module.event(botevents.RPL_WELCOME) @sopel.module.rule('.*') def request_channels_list_initial(bot, trigger): diff --git a/sopel_modules/SpiceBot_Events/Connected.py b/sopel_modules/SpiceBot_Events/Connected.py new file mode 100644 index 0000000..958b335 --- /dev/null +++ b/sopel_modules/SpiceBot_Events/Connected.py @@ -0,0 +1,19 @@ +# coding=utf-8 + +from __future__ import unicode_literals, absolute_import, division, print_function + +import sopel.module + +from sopel_modules.SpiceBot.Events import botevents + +import time + + +@sopel.module.event(botevents.BOT_WELCOME) +@sopel.module.rule('.*') +def bot_events_Connected(bot, trigger): + """Here, we wait until we are in at least one channel""" + while not len(bot.channels.keys()): + pass + time.sleep(1) + botevents.trigger(bot, botevents.BOT_CONNECTED, "Bot Connected to IRC") diff --git a/sopel_modules/SpiceBot_Events/Events.py b/sopel_modules/SpiceBot_Events/Events.py deleted file mode 100644 index d5ed089..0000000 --- a/sopel_modules/SpiceBot_Events/Events.py +++ /dev/null @@ -1,79 +0,0 @@ -# coding=utf-8 - -from __future__ import unicode_literals, absolute_import, division, print_function - -import sopel.module -from sopel.trigger import PreTrigger - -from sopel_modules.SpiceBot.Logs import botlogs -from sopel_modules.SpiceBot.Events import botevents - -import time - - -def setup(bot): - botlogs.log('SpiceBot_Events', "Starting setup procedure") - - -@sopel.module.event(botevents.RPL_WELCOME) -@sopel.module.rule('.*') -def bot_startup_welcome(bot, trigger): - """The Bot events system does not start until RPL_WELCOME 001 is recieved - from the server""" - botevents.trigger(bot, botevents.BOT_WELCOME, "Welcome to the SpiceBot Events System") - - -@sopel.module.event(botevents.BOT_WELCOME) -@sopel.module.rule('.*') -def bot_events_start(bot, trigger): - """This stage is redundant, but shows the system is working.""" - botlogs.log('SpiceBot_Events', trigger.args[1], True) - botevents.trigger(bot, botevents.BOT_READY, "Ready To Process module setup procedures") - - -@sopel.module.event(botevents.BOT_WELCOME) -@sopel.module.rule('.*') -def bot_startup_connection(bot, trigger): - """Here, we wait until we are in at least one channel""" - while not len(bot.channels.keys()): - pass - time.sleep(1) - botevents.trigger(bot, botevents.BOT_CONNECTED, "Bot Connected to IRC") - - -@botevents.startup_check_ready() -@sopel.module.event(botevents.BOT_READY) -@sopel.module.rule('.*') -def bot_events_startup_complete(bot, trigger): - """All events registered as required for startup have completed""" - botlogs.log('SpiceBot_Events', trigger.args[1], True) - botevents.trigger(bot, botevents.BOT_LOADED, "All registered modules setup procedures have completed") - - -@sopel.module.event(botevents.BOT_CONNECTED) -@sopel.module.rule('.*') -def bot_events_connected(bot, trigger): - """For items tossed in a queue, this will trigger them accordingly""" - botlogs.log('SpiceBot_Events', trigger.args[1], True) - - while True: - if len(botevents.SpiceBot_Events["trigger_queue"]): - number = botevents.SpiceBot_Events["trigger_queue"][0]["number"] - message = botevents.SpiceBot_Events["trigger_queue"][0]["message"] - pretrigger = PreTrigger( - bot.nick, - ":SpiceBot_Events " + str(number) + " " + str(bot.nick) + " :" + message - ) - bot.dispatch(pretrigger) - del botevents.SpiceBot_Events["trigger_queue"][0] - botevents.recieved({"number": number, "message": message}) - else: - if botevents.startup_check(): - return - - -@sopel.module.event(botevents.BOT_LOADED) -@sopel.module.rule('.*') -def bot_events_complete(bot, trigger): - """This is here simply to log to stderr that this was recieved.""" - botlogs.log('SpiceBot_Events', trigger.args[1], True) diff --git a/sopel_modules/SpiceBot_Events/Loaded.py b/sopel_modules/SpiceBot_Events/Loaded.py new file mode 100644 index 0000000..679c06f --- /dev/null +++ b/sopel_modules/SpiceBot_Events/Loaded.py @@ -0,0 +1,15 @@ +# coding=utf-8 + +from __future__ import unicode_literals, absolute_import, division, print_function + +import sopel.module + +from sopel_modules.SpiceBot.Events import botevents + + +@botevents.startup_check_ready() +@sopel.module.event(botevents.BOT_READY) +@sopel.module.rule('.*') +def bot_events_startup_complete(bot, trigger): + """All events registered as required for startup have completed""" + botevents.trigger(bot, botevents.BOT_LOADED, "All registered modules setup procedures have completed") diff --git a/sopel_modules/SpiceBot_Events/Logging.py b/sopel_modules/SpiceBot_Events/Logging.py new file mode 100644 index 0000000..9176d9e --- /dev/null +++ b/sopel_modules/SpiceBot_Events/Logging.py @@ -0,0 +1,15 @@ +# coding=utf-8 + +from __future__ import unicode_literals, absolute_import, division, print_function + +import sopel.module + +from sopel_modules.SpiceBot.Logs import botlogs +from sopel_modules.SpiceBot.Events import botevents + + +@sopel.module.event(botevents.BOT_WELCOME, botevents.BOT_READY, botevents.BOT_CONNECTED, botevents.BOT_LOADED) +@sopel.module.rule('.*') +def bot_events_complete(bot, trigger): + """This is here simply to log to stderr that this was recieved.""" + botlogs.log('SpiceBot_Events', trigger.args[1], True) diff --git a/sopel_modules/SpiceBot_Events/Queue.py b/sopel_modules/SpiceBot_Events/Queue.py new file mode 100644 index 0000000..0590f63 --- /dev/null +++ b/sopel_modules/SpiceBot_Events/Queue.py @@ -0,0 +1,19 @@ +# coding=utf-8 + +from __future__ import unicode_literals, absolute_import, division, print_function + +import sopel.module + +from sopel_modules.SpiceBot.Events import botevents + + +@sopel.module.event(botevents.BOT_CONNECTED) +@sopel.module.rule('.*') +def bot_events_connected(bot, trigger): + """For items tossed in a queue, this will trigger them accordingly""" + + while True: + if len(botevents.SpiceBot_Events["trigger_queue"]): + pretriggerdict = botevents.SpiceBot_Events["trigger_queue"][0] + botevents.dispatch(pretriggerdict) + del botevents.SpiceBot_Events["trigger_queue"][0] diff --git a/sopel_modules/SpiceBot_Events/Ready.py b/sopel_modules/SpiceBot_Events/Ready.py new file mode 100644 index 0000000..4e8df49 --- /dev/null +++ b/sopel_modules/SpiceBot_Events/Ready.py @@ -0,0 +1,14 @@ +# coding=utf-8 + +from __future__ import unicode_literals, absolute_import, division, print_function + +import sopel.module + +from sopel_modules.SpiceBot.Events import botevents + + +@sopel.module.event(botevents.BOT_WELCOME) +@sopel.module.rule('.*') +def bot_events_start(bot, trigger): + """This stage is redundant, but shows the system is working.""" + botevents.trigger(bot, botevents.BOT_READY, "Ready To Process module setup procedures") diff --git a/sopel_modules/SpiceBot_Events/Welcome.py b/sopel_modules/SpiceBot_Events/Welcome.py new file mode 100644 index 0000000..228420e --- /dev/null +++ b/sopel_modules/SpiceBot_Events/Welcome.py @@ -0,0 +1,15 @@ +# coding=utf-8 + +from __future__ import unicode_literals, absolute_import, division, print_function + +import sopel.module + +from sopel_modules.SpiceBot.Events import botevents + + +@sopel.module.event(botevents.RPL_WELCOME) +@sopel.module.rule('.*') +def bot_startup_welcome(bot, trigger): + """The Bot events system does not start until RPL_WELCOME 001 is recieved + from the server""" + botevents.trigger(bot, botevents.BOT_WELCOME, "Welcome to the SpiceBot Events System") diff --git a/sopel_modules/SpiceBot_Events/__init__.py b/sopel_modules/SpiceBot_Events/__init__.py index 2e6b7d5..e2846d8 100644 --- a/sopel_modules/SpiceBot_Events/__init__.py +++ b/sopel_modules/SpiceBot_Events/__init__.py @@ -1,7 +1,12 @@ # coding=utf8 from __future__ import unicode_literals, absolute_import, division, print_function -from .Events import * +from .Welcome import * +from .Ready import * +from .Connected import * +from .Loaded import * +from .Queue import * +from .Logging import * __author__ = 'Sam Zick' __email__ = 'sam@deathbybandaid.net' diff --git a/sopel_modules/SpiceBot_Logs/Queue.py b/sopel_modules/SpiceBot_Logs/Queue.py index 2772525..784efa7 100644 --- a/sopel_modules/SpiceBot_Logs/Queue.py +++ b/sopel_modules/SpiceBot_Logs/Queue.py @@ -15,7 +15,7 @@ def setup(bot): botevents.trigger(bot, botevents.BOT_LOGS, "SpiceBot_Logs") -@sopel.module.event('001') +@sopel.module.event(botevents.RPL_WELCOME) @sopel.module.rule('.*') def join_log_channel(bot, trigger): diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py index 323edf7..1756770 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py @@ -17,7 +17,7 @@ import time def bot_startup_monologue_start(bot, trigger): # Startup - botlogs.log('SpiceBot_StartupMonologue', bot.nick + " is now starting. Please wait while I load my configuration", True) + botlogs.log('SpiceBot_StartupMonologue', bot.nick + " is now starting. Please wait while I load my configuration") bot.osd(" is now starting. Please wait while I load my configuration.", bot.channels.keys(), 'ACTION') botevents.trigger(bot, botevents.BOT_STARTUPMONOLOGUE_CONNECTED, "SpiceBot_StartupMonologue") @@ -45,6 +45,7 @@ def bot_startup_monologue_channels(bot, trigger): botcount = len(bot.channels.keys()) servercount = len(botchannels.SpiceBot_Channels['list'].keys()) bot.memory['SpiceBot_StartupMonologue'].append("I am in " + str(botcount) + " of " + str(servercount) + " channel(s) available on this server.") + botlogs.log('SpiceBot_StartupMonologue', "I am in " + str(botcount) + " of " + str(servercount) + " channel(s) available on this server.") botevents.trigger(bot, botevents.BOT_STARTUPMONOLOGUE_CHANNELS, "SpiceBot_StartupMonologue")