From 7676930ed7a4af86895d2c6cb7c36bd6eeea1a84 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 13:40:54 -0400 Subject: [PATCH 01/53] remove while true statements --- sopel_modules/SpiceBot_Channels/Channels.py | 2 +- sopel_modules/SpiceBot_Logs/Logs.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot_Channels/Channels.py b/sopel_modules/SpiceBot_Channels/Channels.py index c181b53..e81e162 100644 --- a/sopel_modules/SpiceBot_Channels/Channels.py +++ b/sopel_modules/SpiceBot_Channels/Channels.py @@ -88,7 +88,7 @@ def trigger_channel_list_initial(bot, trigger): if "*" in bot.memory['SpiceBot_Channels']['channels']: del bot.memory['SpiceBot_Channels']['channels']["*"] - while True: + while 'SpiceBot_Channels' in bot.memory: time.sleep(1800) oldlist = list(bot.memory['SpiceBot_Channels']['channels'].keys()) bot.write(['LIST']) diff --git a/sopel_modules/SpiceBot_Logs/Logs.py b/sopel_modules/SpiceBot_Logs/Logs.py index c046605..85593d5 100644 --- a/sopel_modules/SpiceBot_Logs/Logs.py +++ b/sopel_modules/SpiceBot_Logs/Logs.py @@ -50,7 +50,7 @@ def join_log_channel(bot, trigger): if 'SpiceBot_Logs_queue' not in bot.memory: bot.memory['SpiceBot_Logs_queue'] = [] - while True: + while 'SpiceBot_Logs_queue' in bot.memory: if len(bot.memory['SpiceBot_Logs_queue']): bot.say(str(bot.memory['SpiceBot_Logs_queue'][0]), channel) del bot.memory['SpiceBot_Logs_queue'][0] From 612f2bc29b06967715ee206ed756a8efaab6cef9 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 13:51:17 -0400 Subject: [PATCH 02/53] Remove Output --- sopel_modules/SpiceBot_Update/Update.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot_Update/Update.py b/sopel_modules/SpiceBot_Update/Update.py index 6ff7272..820cd41 100644 --- a/sopel_modules/SpiceBot_Update/Update.py +++ b/sopel_modules/SpiceBot_Update/Update.py @@ -75,8 +75,9 @@ def spicebot_update(bot, deps=False): pipcommand += " git+" + str(bot.config.SpiceBot_Update.gitrepo) + "@" + str(bot.config.SpiceBot_Update.gitbranch) bot_logging(bot, 'SpiceBot_Update', "Running `" + pipcommand + "`") - for line in os.popen(pipcommand).read().split('\n'): - bot_logging(bot, 'SpiceBot_Update', " " + line) + # for line in os.popen(pipcommand).read().split('\n'): + # bot_logging(bot, 'SpiceBot_Update', " " + line) + os.system(pipcommand) stock_modules_begone(bot) From 617619ddaa02e0b8c7f59ce6df0f9ac13861f020 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 14:13:40 -0400 Subject: [PATCH 03/53] remove old code --- sopel_modules/SpiceBot_SBTools/__init__.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_SBTools/__init__.py b/sopel_modules/SpiceBot_SBTools/__init__.py index 9bbaa95..694e9b7 100644 --- a/sopel_modules/SpiceBot_SBTools/__init__.py +++ b/sopel_modules/SpiceBot_SBTools/__init__.py @@ -6,6 +6,9 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi import sopel from sopel.module import OP, ADMIN, VOICE, OWNER, HALFOP from sopel.tools import stderr +from sopel import coretasks, config +from sopel.trigger import PreTrigger, Trigger +from sopel.bot import SopelWrapper HOP = HALFOP import collections @@ -48,6 +51,12 @@ def sopel_triggerargs(bot, trigger, command_type='module_command'): return triggerargs, command +def bot_trigger_create(bot): + pretrigger = PreTrigger(bot.nick, ":test.example.com 7777 Foo #test ~Admin adminhost test.example.com Admin Hr~ :0 Admin",) + trigger = Trigger(bot.config, pretrigger, None) + coretasks.recv_who(SopelWrapper(bot, trigger), trigger) + + def bot_privs(bot, privtype): if privtype == 'owners': privtype = 'owner' @@ -242,7 +251,6 @@ def channel_list_current(bot): bot.memory['SpiceBot_Channels']['channels'][str(channel).lower()] = dict() bot.memory['SpiceBot_Channels']['channels'][str(channel).lower()]['name'] = str(channel) bot.memory['SpiceBot_Channels']['channels'][str(channel).lower()]['topic'] = topic_compile(topic) - channel_privs(bot, channel) if "*" in bot.memory['SpiceBot_Channels']: bot.memory['SpiceBot_Channels'].remove("*") From f19d4d0417529303681f5f560f844548eb1b81b5 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 15:48:48 -0400 Subject: [PATCH 04/53] New Fake Event system --- sopel_modules/SpiceBot_Botevents/BotEvents.py | 17 +++++++++++++++++ sopel_modules/SpiceBot_SBTools/__init__.py | 6 ------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/sopel_modules/SpiceBot_Botevents/BotEvents.py b/sopel_modules/SpiceBot_Botevents/BotEvents.py index 828d696..fe970bf 100644 --- a/sopel_modules/SpiceBot_Botevents/BotEvents.py +++ b/sopel_modules/SpiceBot_Botevents/BotEvents.py @@ -31,6 +31,23 @@ def setup_thread(bot): bot.memory["Sopel_BotEvents"] = {"loaded": [], "startup": []} +@sopel.module.event('7777') +@sopel.module.rule('.*') +def parse_event_spicebotdbb(bot, trigger): + sopel.tools.stderr("\n" + trigger.event + " " + str(trigger.args) + "\n") + + +@sopel.module.event('001') +@sopel.module.rule('.*') +def bot_trigger_create(bot, trigger): + pretrigger = sopel.trigger.PreTrigger( + bot.nick, + ":" + bot.nick + " 7777 " + bot.nick + + " :This is a test of the Fake Event System" + ) + bot.dispatch(pretrigger) + + def list_bot_events(bot, list_type): if "Sopel_BotEvents" not in bot.memory: bot.memory["Sopel_BotEvents"] = {"loaded": [], "startup": []} diff --git a/sopel_modules/SpiceBot_SBTools/__init__.py b/sopel_modules/SpiceBot_SBTools/__init__.py index 694e9b7..757018e 100644 --- a/sopel_modules/SpiceBot_SBTools/__init__.py +++ b/sopel_modules/SpiceBot_SBTools/__init__.py @@ -51,12 +51,6 @@ def sopel_triggerargs(bot, trigger, command_type='module_command'): return triggerargs, command -def bot_trigger_create(bot): - pretrigger = PreTrigger(bot.nick, ":test.example.com 7777 Foo #test ~Admin adminhost test.example.com Admin Hr~ :0 Admin",) - trigger = Trigger(bot.config, pretrigger, None) - coretasks.recv_who(SopelWrapper(bot, trigger), trigger) - - def bot_privs(bot, privtype): if privtype == 'owners': privtype = 'owner' From 5247cd933b4109911499f71067ca91010c1bcca5 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 15:58:05 -0400 Subject: [PATCH 05/53] Event System testing --- sopel_modules/SpiceBot_Botevents/BotEvents.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sopel_modules/SpiceBot_Botevents/BotEvents.py b/sopel_modules/SpiceBot_Botevents/BotEvents.py index fe970bf..56771f8 100644 --- a/sopel_modules/SpiceBot_Botevents/BotEvents.py +++ b/sopel_modules/SpiceBot_Botevents/BotEvents.py @@ -5,7 +5,7 @@ Sopel BotEvents is a poor mans way to create module load order dependencies """ from __future__ import unicode_literals, absolute_import, division, print_function -import sopel.module +import sopel from sopel_modules.SpiceBot_SBTools import bot_logging import threading @@ -15,7 +15,6 @@ def configure(config): def setup(bot): - # TODO add custom pretrigger events bot_logging(bot, 'Sopel_BotEvents', "Starting Module Events Logging") threading.Thread(target=setup_thread, args=(bot,)).start() @@ -27,6 +26,7 @@ def shutdown(bot): def setup_thread(bot): + sopel.tools._events.events.SpiceBotdbb = '7777' if "Sopel_BotEvents" not in bot.memory: bot.memory["Sopel_BotEvents"] = {"loaded": [], "startup": []} @@ -42,7 +42,7 @@ def parse_event_spicebotdbb(bot, trigger): def bot_trigger_create(bot, trigger): pretrigger = sopel.trigger.PreTrigger( bot.nick, - ":" + bot.nick + " 7777 " + bot.nick + + ":" + str(bot.nick) + ".event 7777 " + str(bot.nick) + " :This is a test of the Fake Event System" ) bot.dispatch(pretrigger) From e16c733016bef9ca6e16146996255839b94e8345 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 16:00:05 -0400 Subject: [PATCH 06/53] More event testing --- sopel_modules/SpiceBot_Botevents/BotEvents.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sopel_modules/SpiceBot_Botevents/BotEvents.py b/sopel_modules/SpiceBot_Botevents/BotEvents.py index 56771f8..7a6217d 100644 --- a/sopel_modules/SpiceBot_Botevents/BotEvents.py +++ b/sopel_modules/SpiceBot_Botevents/BotEvents.py @@ -40,6 +40,7 @@ def parse_event_spicebotdbb(bot, trigger): @sopel.module.event('001') @sopel.module.rule('.*') def bot_trigger_create(bot, trigger): + sopel.tools.stderr("\n" + trigger.event + " " + str(trigger.args) + "\n") pretrigger = sopel.trigger.PreTrigger( bot.nick, ":" + str(bot.nick) + ".event 7777 " + str(bot.nick) + From 9abea33dd8ad870b70b1424072ab3085d6b1668b Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 16:07:12 -0400 Subject: [PATCH 07/53] Pretrigger standalone testing --- sopel_modules/SpiceBot_Botevents/BotEvents.py | 22 ++----------- .../SpiceBot_Pretrigger/Pretrigger.py | 32 +++++++++++++++++++ sopel_modules/SpiceBot_Pretrigger/__init__.py | 8 +++++ 3 files changed, 42 insertions(+), 20 deletions(-) create mode 100644 sopel_modules/SpiceBot_Pretrigger/Pretrigger.py create mode 100644 sopel_modules/SpiceBot_Pretrigger/__init__.py diff --git a/sopel_modules/SpiceBot_Botevents/BotEvents.py b/sopel_modules/SpiceBot_Botevents/BotEvents.py index 7a6217d..828d696 100644 --- a/sopel_modules/SpiceBot_Botevents/BotEvents.py +++ b/sopel_modules/SpiceBot_Botevents/BotEvents.py @@ -5,7 +5,7 @@ Sopel BotEvents is a poor mans way to create module load order dependencies """ from __future__ import unicode_literals, absolute_import, division, print_function -import sopel +import sopel.module from sopel_modules.SpiceBot_SBTools import bot_logging import threading @@ -15,6 +15,7 @@ def configure(config): def setup(bot): + # TODO add custom pretrigger events bot_logging(bot, 'Sopel_BotEvents', "Starting Module Events Logging") threading.Thread(target=setup_thread, args=(bot,)).start() @@ -26,29 +27,10 @@ def shutdown(bot): def setup_thread(bot): - sopel.tools._events.events.SpiceBotdbb = '7777' if "Sopel_BotEvents" not in bot.memory: bot.memory["Sopel_BotEvents"] = {"loaded": [], "startup": []} -@sopel.module.event('7777') -@sopel.module.rule('.*') -def parse_event_spicebotdbb(bot, trigger): - sopel.tools.stderr("\n" + trigger.event + " " + str(trigger.args) + "\n") - - -@sopel.module.event('001') -@sopel.module.rule('.*') -def bot_trigger_create(bot, trigger): - sopel.tools.stderr("\n" + trigger.event + " " + str(trigger.args) + "\n") - pretrigger = sopel.trigger.PreTrigger( - bot.nick, - ":" + str(bot.nick) + ".event 7777 " + str(bot.nick) + - " :This is a test of the Fake Event System" - ) - bot.dispatch(pretrigger) - - def list_bot_events(bot, list_type): if "Sopel_BotEvents" not in bot.memory: bot.memory["Sopel_BotEvents"] = {"loaded": [], "startup": []} diff --git a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py new file mode 100644 index 0000000..97e740b --- /dev/null +++ b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +#coding=utf-8 +from __future__ import unicode_literals, absolute_import, print_function, division + +# sopel imports +import sopel +from sopel import module +from sopel.tools import stderr + +from sopel import coretasks +from sopel.trigger import PreTrigger, Trigger +from sopel.bot import SopelWrapper + +def setup(bot): + sopel.tools._events.events.SpiceBotdbb = '7777' + + +@module.event('7777') +@module.rule('.*') +def parse_event_spicebotdbb(bot, trigger): + stderr("\n" + trigger.event + " " + str(trigger.args) + "\n") + + +@module.event('001') +@module.rule('.*') +def bot_trigger_create(bot, trigger): + + pretrigger = PreTrigger( + bot.nick, + ":irc.spicebot.net 7777 SpiceDBB :Welcome to the SpiceBot IRC Network SpiceDBB!SpiceDBB@pfsense.dbb.local" + ) + bot.dispatch(pretrigger) diff --git a/sopel_modules/SpiceBot_Pretrigger/__init__.py b/sopel_modules/SpiceBot_Pretrigger/__init__.py new file mode 100644 index 0000000..3dc1965 --- /dev/null +++ b/sopel_modules/SpiceBot_Pretrigger/__init__.py @@ -0,0 +1,8 @@ +# coding=utf8 +from __future__ import unicode_literals, absolute_import, division, print_function + +from .Pretrigger import * + +__author__ = 'Sam Zick' +__email__ = 'sam@deathbybandaid.net' +__version__ = '0.1.1' From ca6281e752e46ea24836d898f8250b09f5869da7 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 16:11:09 -0400 Subject: [PATCH 08/53] another event test --- sopel_modules/SpiceBot_Pretrigger/Pretrigger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py index 97e740b..8e41441 100644 --- a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py +++ b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py @@ -27,6 +27,6 @@ def bot_trigger_create(bot, trigger): pretrigger = PreTrigger( bot.nick, - ":irc.spicebot.net 7777 SpiceDBB :Welcome to the SpiceBot IRC Network SpiceDBB!SpiceDBB@pfsense.dbb.local" + ":irc.spicebot.net 7777 " + str(bot.nick) + " :Welcome to the SpiceBot Test Event System!" ) bot.dispatch(pretrigger) From 78412aafb9933f7aa2fca993371c2d9f5a7b4d9e Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 16:18:25 -0400 Subject: [PATCH 09/53] Test functionality --- sopel_modules/SpiceBot_Pretrigger/Pretrigger.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py index 8e41441..98ca2d5 100644 --- a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py +++ b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py @@ -23,10 +23,13 @@ def parse_event_spicebotdbb(bot, trigger): @module.event('001') @module.rule('.*') -def bot_trigger_create(bot, trigger): +def bot_trigger_simulator(bot, trigger): + bot_trigger_create(bot, 7777, "Welcome to the SpiceBot Test Event System!") + +def bot_event_trigger_create(bot, number, message): pretrigger = PreTrigger( bot.nick, - ":irc.spicebot.net 7777 " + str(bot.nick) + " :Welcome to the SpiceBot Test Event System!" + ":irc.spicebot.net " + str(number) + " " + str(bot.nick) + " :" + message ) bot.dispatch(pretrigger) From 738c751cd1ce6aef0d05d6daa8cc32c4dd784cf0 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 16:22:33 -0400 Subject: [PATCH 10/53] fix def name --- sopel_modules/SpiceBot_Pretrigger/Pretrigger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py index 98ca2d5..97de8db 100644 --- a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py +++ b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py @@ -24,7 +24,7 @@ def parse_event_spicebotdbb(bot, trigger): @module.event('001') @module.rule('.*') def bot_trigger_simulator(bot, trigger): - bot_trigger_create(bot, 7777, "Welcome to the SpiceBot Test Event System!") + bot_event_trigger_create(bot, 7777, "Welcome to the SpiceBot Test Event System!") def bot_event_trigger_create(bot, number, message): From f7f0941b1a6ffd8b589a4e3ac9c7cdfe9f022bce Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 16:28:23 -0400 Subject: [PATCH 11/53] Update File --- .../SpiceBot_Pretrigger/Pretrigger.py | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py index 97de8db..86b911d 100644 --- a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py +++ b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py @@ -4,32 +4,30 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi # sopel imports import sopel -from sopel import module -from sopel.tools import stderr -from sopel import coretasks -from sopel.trigger import PreTrigger, Trigger -from sopel.bot import SopelWrapper +from sopel.trigger import PreTrigger + def setup(bot): sopel.tools._events.events.SpiceBotdbb = '7777' -@module.event('7777') -@module.rule('.*') +@sopel.module.event('7777') +@sopel.module.rule('.*') def parse_event_spicebotdbb(bot, trigger): - stderr("\n" + trigger.event + " " + str(trigger.args) + "\n") + sopel.tools.stderr("\n" + trigger.event + " " + str(trigger.args) + "\n") -@module.event('001') -@module.rule('.*') +@sopel.module.event('001') +@sopel.module.rule('.*') def bot_trigger_simulator(bot, trigger): bot_event_trigger_create(bot, 7777, "Welcome to the SpiceBot Test Event System!") + def bot_event_trigger_create(bot, number, message): pretrigger = PreTrigger( bot.nick, - ":irc.spicebot.net " + str(number) + " " + str(bot.nick) + " :" + message + ":SpiceBot_Event " + str(number) + " " + str(bot.nick) + " :" + message ) bot.dispatch(pretrigger) From f8cdd18390571bca60a90320e2508a089dce7702 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 16:31:17 -0400 Subject: [PATCH 12/53] Updates --- sopel_modules/SpiceBot_Pretrigger/Pretrigger.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py index 86b911d..7137945 100644 --- a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py +++ b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py @@ -5,8 +5,6 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi # sopel imports import sopel -from sopel.trigger import PreTrigger - def setup(bot): sopel.tools._events.events.SpiceBotdbb = '7777' @@ -26,7 +24,7 @@ def bot_trigger_simulator(bot, trigger): def bot_event_trigger_create(bot, number, message): - pretrigger = PreTrigger( + pretrigger = sopel.trigger.PreTrigger( bot.nick, ":SpiceBot_Event " + str(number) + " " + str(bot.nick) + " :" + message ) From 1587a64a36708dc03e1024a81346ab32eceff456 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 16:43:43 -0400 Subject: [PATCH 13/53] Remove extra code --- sopel_modules/SpiceBot_Pretrigger/Pretrigger.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py index 7137945..3de78fb 100644 --- a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py +++ b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py @@ -6,10 +6,6 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi import sopel -def setup(bot): - sopel.tools._events.events.SpiceBotdbb = '7777' - - @sopel.module.event('7777') @sopel.module.rule('.*') def parse_event_spicebotdbb(bot, trigger): From ce1c0df70e80e62f55514946c850d6a14ff0533f Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 16:45:37 -0400 Subject: [PATCH 14/53] remove extra line --- sopel_modules/SpiceBot_Pretrigger/Pretrigger.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py index 3de78fb..cb572a7 100644 --- a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py +++ b/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py @@ -19,7 +19,6 @@ def bot_trigger_simulator(bot, trigger): def bot_event_trigger_create(bot, number, message): - pretrigger = sopel.trigger.PreTrigger( bot.nick, ":SpiceBot_Event " + str(number) + " " + str(bot.nick) + " :" + message From 0df984728668740acab781deb01445dd38b7d3e7 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 18:06:42 -0400 Subject: [PATCH 15/53] Events: Start Migration from bot.memory to Event Numbers --- sopel_modules/SpiceBot_Botevents/BotEvents.py | 75 ------------------- sopel_modules/SpiceBot_Channels/Channels.py | 2 +- .../SpiceBot_CommandsQuery/CommandsQuery.py | 2 +- .../Events.py} | 2 +- .../__init__.py | 2 +- sopel_modules/SpiceBot_GifSearch/gifsearch.py | 2 +- .../Connected.py | 4 +- sopel_modules/SpiceBot_LoadOrder/LoadOrder.py | 75 +++++++++++++++++++ .../Startup_Complete.py | 4 +- .../__init__.py | 6 +- .../StartupMonologue.py | 2 +- 11 files changed, 88 insertions(+), 88 deletions(-) delete mode 100644 sopel_modules/SpiceBot_Botevents/BotEvents.py rename sopel_modules/{SpiceBot_Pretrigger/Pretrigger.py => SpiceBot_Events/Events.py} (89%) rename sopel_modules/{SpiceBot_Pretrigger => SpiceBot_Events}/__init__.py (87%) rename sopel_modules/{SpiceBot_Botevents => SpiceBot_LoadOrder}/Connected.py (80%) create mode 100644 sopel_modules/SpiceBot_LoadOrder/LoadOrder.py rename sopel_modules/{SpiceBot_Botevents => SpiceBot_LoadOrder}/Startup_Complete.py (75%) rename sopel_modules/{SpiceBot_Botevents => SpiceBot_LoadOrder}/__init__.py (70%) diff --git a/sopel_modules/SpiceBot_Botevents/BotEvents.py b/sopel_modules/SpiceBot_Botevents/BotEvents.py deleted file mode 100644 index 828d696..0000000 --- a/sopel_modules/SpiceBot_Botevents/BotEvents.py +++ /dev/null @@ -1,75 +0,0 @@ -# coding=utf8 -"""Sopel_BotEvents - -Sopel BotEvents is a poor mans way to create module load order dependencies -""" -from __future__ import unicode_literals, absolute_import, division, print_function - -import sopel.module -from sopel_modules.SpiceBot_SBTools import bot_logging -import threading - - -def configure(config): - pass - - -def setup(bot): - # TODO add custom pretrigger events - bot_logging(bot, 'Sopel_BotEvents', "Starting Module Events Logging") - - threading.Thread(target=setup_thread, args=(bot,)).start() - - -def shutdown(bot): - if "Sopel_BotEvents" in bot.memory: - del bot.memory["Sopel_BotEvents"] - - -def setup_thread(bot): - if "Sopel_BotEvents" not in bot.memory: - bot.memory["Sopel_BotEvents"] = {"loaded": [], "startup": []} - - -def list_bot_events(bot, list_type): - if "Sopel_BotEvents" not in bot.memory: - bot.memory["Sopel_BotEvents"] = {"loaded": [], "startup": []} - return bot.memory["Sopel_BotEvents"][list_type] - - -def check_bot_events(bot, listreq): - if "Sopel_BotEvents" not in bot.memory: - bot.memory["Sopel_BotEvents"] = {"loaded": [], "startup": []} - if not isinstance(listreq, list): - listreq = [str(listreq)] - for requirement in listreq: - if requirement not in bot.memory["Sopel_BotEvents"]["loaded"]: - return False - return True - - -def set_bot_event(bot, addonreq): - if "Sopel_BotEvents" not in bot.memory: - bot.memory["Sopel_BotEvents"] = {"loaded": [], "startup": []} - if not isinstance(addonreq, list): - addonreq = [str(addonreq)] - - bot.memory["Sopel_BotEvents"]["loaded"].extend(addonreq) - - -def startup_bot_event(bot, addonreq): - if "Sopel_BotEvents" not in bot.memory: - bot.memory["Sopel_BotEvents"] = {"loaded": [], "startup": []} - if not isinstance(addonreq, list): - addonreq = [str(addonreq)] - - bot.memory["Sopel_BotEvents"]["startup"].extend(addonreq) - - -def check_bot_startup(bot): - if "Sopel_BotEvents" not in bot.memory: - bot.memory["Sopel_BotEvents"] = {"loaded": [], "startup": []} - for startupitem in bot.memory["Sopel_BotEvents"]["startup"]: - if startupitem not in bot.memory["Sopel_BotEvents"]["loaded"]: - return False - return True diff --git a/sopel_modules/SpiceBot_Channels/Channels.py b/sopel_modules/SpiceBot_Channels/Channels.py index e81e162..42d94e9 100644 --- a/sopel_modules/SpiceBot_Channels/Channels.py +++ b/sopel_modules/SpiceBot_Channels/Channels.py @@ -6,7 +6,7 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi import sopel.module from sopel.config.types import StaticSection, ValidatedAttribute, ListAttribute -from sopel_modules.SpiceBot_Botevents.BotEvents import set_bot_event, startup_bot_event +from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, startup_bot_event import time diff --git a/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py b/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py index 0ed520c..fc2ee60 100644 --- a/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py +++ b/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py @@ -11,7 +11,7 @@ from operator import itemgetter import threading -from sopel_modules.SpiceBot_Botevents.BotEvents import set_bot_event, check_bot_events, bot_logging +from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, check_bot_events, bot_logging import spicemanip diff --git a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py b/sopel_modules/SpiceBot_Events/Events.py similarity index 89% rename from sopel_modules/SpiceBot_Pretrigger/Pretrigger.py rename to sopel_modules/SpiceBot_Events/Events.py index cb572a7..df9531c 100644 --- a/sopel_modules/SpiceBot_Pretrigger/Pretrigger.py +++ b/sopel_modules/SpiceBot_Events/Events.py @@ -21,6 +21,6 @@ def bot_trigger_simulator(bot, trigger): def bot_event_trigger_create(bot, number, message): pretrigger = sopel.trigger.PreTrigger( bot.nick, - ":SpiceBot_Event " + str(number) + " " + str(bot.nick) + " :" + message + ":SpiceBot_Events " + str(number) + " " + str(bot.nick) + " :" + message ) bot.dispatch(pretrigger) diff --git a/sopel_modules/SpiceBot_Pretrigger/__init__.py b/sopel_modules/SpiceBot_Events/__init__.py similarity index 87% rename from sopel_modules/SpiceBot_Pretrigger/__init__.py rename to sopel_modules/SpiceBot_Events/__init__.py index 3dc1965..2e6b7d5 100644 --- a/sopel_modules/SpiceBot_Pretrigger/__init__.py +++ b/sopel_modules/SpiceBot_Events/__init__.py @@ -1,7 +1,7 @@ # coding=utf8 from __future__ import unicode_literals, absolute_import, division, print_function -from .Pretrigger import * +from .Events import * __author__ = 'Sam Zick' __email__ = 'sam@deathbybandaid.net' diff --git a/sopel_modules/SpiceBot_GifSearch/gifsearch.py b/sopel_modules/SpiceBot_GifSearch/gifsearch.py index b6cad11..c68f958 100644 --- a/sopel_modules/SpiceBot_GifSearch/gifsearch.py +++ b/sopel_modules/SpiceBot_GifSearch/gifsearch.py @@ -5,7 +5,7 @@ from __future__ import unicode_literals, absolute_import, division, print_functi import sopel.module from sopel.config.types import StaticSection, ValidatedAttribute -from sopel_modules.SpiceBot_Botevents.BotEvents import set_bot_event, startup_bot_event +from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, startup_bot_event from sopel_modules.SpiceBot_CommandsQuery.CommandsQuery import commandsquery_register, commandsquery_register_type diff --git a/sopel_modules/SpiceBot_Botevents/Connected.py b/sopel_modules/SpiceBot_LoadOrder/Connected.py similarity index 80% rename from sopel_modules/SpiceBot_Botevents/Connected.py rename to sopel_modules/SpiceBot_LoadOrder/Connected.py index 1c62e49..7fa18fa 100644 --- a/sopel_modules/SpiceBot_Botevents/Connected.py +++ b/sopel_modules/SpiceBot_LoadOrder/Connected.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals, absolute_import, division, print_function import sopel.module -from .BotEvents import check_bot_events, startup_bot_event, set_bot_event +from .LoadOrder import check_bot_events, startup_bot_event, set_bot_event from sopel_modules.SpiceBot_SBTools import bot_logging import time @@ -22,4 +22,4 @@ def bot_startup_connection(bot, trigger): time.sleep(1) set_bot_event(bot, "connected") - bot_logging(bot, 'Sopel_BotEvents', "Connected to IRC") + bot_logging(bot, 'Sopel_LoadOrder', "Connected to IRC") diff --git a/sopel_modules/SpiceBot_LoadOrder/LoadOrder.py b/sopel_modules/SpiceBot_LoadOrder/LoadOrder.py new file mode 100644 index 0000000..7284293 --- /dev/null +++ b/sopel_modules/SpiceBot_LoadOrder/LoadOrder.py @@ -0,0 +1,75 @@ +# coding=utf8 +"""Sopel_LoadOrder + +Sopel LoadOrder is a poor mans way to create module load order dependencies +""" +from __future__ import unicode_literals, absolute_import, division, print_function + +import sopel.module +from sopel_modules.SpiceBot_SBTools import bot_logging +import threading + + +def configure(config): + pass + + +def setup(bot): + # TODO add custom pretrigger events + bot_logging(bot, 'Sopel_LoadOrder', "Starting Module Events Logging") + + threading.Thread(target=setup_thread, args=(bot,)).start() + + +def shutdown(bot): + if "Sopel_LoadOrder" in bot.memory: + del bot.memory["Sopel_LoadOrder"] + + +def setup_thread(bot): + if "Sopel_LoadOrder" not in bot.memory: + bot.memory["Sopel_LoadOrder"] = {"loaded": [], "startup": []} + + +def list_bot_events(bot, list_type): + if "Sopel_LoadOrder" not in bot.memory: + bot.memory["Sopel_LoadOrder"] = {"loaded": [], "startup": []} + return bot.memory["Sopel_LoadOrder"][list_type] + + +def check_bot_events(bot, listreq): + if "Sopel_LoadOrder" not in bot.memory: + bot.memory["Sopel_LoadOrder"] = {"loaded": [], "startup": []} + if not isinstance(listreq, list): + listreq = [str(listreq)] + for requirement in listreq: + if requirement not in bot.memory["Sopel_LoadOrder"]["loaded"]: + return False + return True + + +def set_bot_event(bot, addonreq): + if "Sopel_LoadOrder" not in bot.memory: + bot.memory["Sopel_LoadOrder"] = {"loaded": [], "startup": []} + if not isinstance(addonreq, list): + addonreq = [str(addonreq)] + + bot.memory["Sopel_LoadOrder"]["loaded"].extend(addonreq) + + +def startup_bot_event(bot, addonreq): + if "Sopel_LoadOrder" not in bot.memory: + bot.memory["Sopel_LoadOrder"] = {"loaded": [], "startup": []} + if not isinstance(addonreq, list): + addonreq = [str(addonreq)] + + bot.memory["Sopel_LoadOrder"]["startup"].extend(addonreq) + + +def check_bot_startup(bot): + if "Sopel_LoadOrder" not in bot.memory: + bot.memory["Sopel_LoadOrder"] = {"loaded": [], "startup": []} + for startupitem in bot.memory["Sopel_LoadOrder"]["startup"]: + if startupitem not in bot.memory["Sopel_LoadOrder"]["loaded"]: + return False + return True diff --git a/sopel_modules/SpiceBot_Botevents/Startup_Complete.py b/sopel_modules/SpiceBot_LoadOrder/Startup_Complete.py similarity index 75% rename from sopel_modules/SpiceBot_Botevents/Startup_Complete.py rename to sopel_modules/SpiceBot_LoadOrder/Startup_Complete.py index ad8e106..16800ee 100644 --- a/sopel_modules/SpiceBot_Botevents/Startup_Complete.py +++ b/sopel_modules/SpiceBot_LoadOrder/Startup_Complete.py @@ -5,7 +5,7 @@ from __future__ import unicode_literals, absolute_import, division, print_functi import sopel.module from sopel_modules.SpiceBot_SBTools import bot_logging -from .BotEvents import set_bot_event, check_bot_startup +from .LoadOrder import set_bot_event, check_bot_startup @sopel.module.event('001') @@ -16,4 +16,4 @@ def bot_startup_complete(bot, trigger): pass set_bot_event(bot, "startup_complete") - bot_logging(bot, 'Sopel_BotEvents', "Module Events Logging Complete") + bot_logging(bot, 'Sopel_LoadOrder', "Module Events Logging Complete") diff --git a/sopel_modules/SpiceBot_Botevents/__init__.py b/sopel_modules/SpiceBot_LoadOrder/__init__.py similarity index 70% rename from sopel_modules/SpiceBot_Botevents/__init__.py rename to sopel_modules/SpiceBot_LoadOrder/__init__.py index ca44086..9307079 100644 --- a/sopel_modules/SpiceBot_Botevents/__init__.py +++ b/sopel_modules/SpiceBot_LoadOrder/__init__.py @@ -1,11 +1,11 @@ # coding=utf8 -"""Sopel_BotEvents +"""Sopel_LoadOrder -Sopel BotEvents is a poor mans way to create module load order dependencies +Sopel LoadOrder is a poor mans way to create module load order dependencies """ from __future__ import unicode_literals, absolute_import, division, print_function -from .BotEvents import * +from .LoadOrder import * from .Connected import * from .Startup_Complete import * diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py index f86d971..4501367 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals, absolute_import, division, print_functi from sopel import module -from sopel_modules.SpiceBot_Botevents.BotEvents import set_bot_event, check_bot_events +from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, check_bot_events from sopel_modules.SpiceBot_SBTools import humanized_time, bot_logging import time From 4b2427077e3d13424fb6764b10922f01a959f2db Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 19:30:26 -0400 Subject: [PATCH 16/53] Basic events system start testing --- sopel_modules/SpiceBot_Events/Events.py | 120 +++++++++++++++++++++--- 1 file changed, 109 insertions(+), 11 deletions(-) diff --git a/sopel_modules/SpiceBot_Events/Events.py b/sopel_modules/SpiceBot_Events/Events.py index df9531c..b100010 100644 --- a/sopel_modules/SpiceBot_Events/Events.py +++ b/sopel_modules/SpiceBot_Events/Events.py @@ -3,24 +3,122 @@ from __future__ import unicode_literals, absolute_import, print_function, division # sopel imports -import sopel +from sopel import module, trigger + +from sopel_modules.SpiceBot_SBTools import bot_logging + +import time -@sopel.module.event('7777') -@sopel.module.rule('.*') -def parse_event_spicebotdbb(bot, trigger): - sopel.tools.stderr("\n" + trigger.event + " " + str(trigger.args) + "\n") +def configure(config): + pass -@sopel.module.event('001') -@sopel.module.rule('.*') -def bot_trigger_simulator(bot, trigger): - bot_event_trigger_create(bot, 7777, "Welcome to the SpiceBot Test Event System!") +def setup(bot): + bot_logging(bot, 'SpiceBot_Events', "Starting setup procedure.") + bot_events_setup_check(bot) + bot_event_startup_register(bot, ['1001', '1002', '1003', '1004']) + bot_events_trigger(bot, 1001, "Welcome to the SpiceBot Events System") + bot_events_set_complete(bot, '1001') -def bot_event_trigger_create(bot, number, message): - pretrigger = sopel.trigger.PreTrigger( +def shutdown(bot): + if "SpiceBot_Events" in bot.memory: + del bot.memory["SpiceBot_Events"] + + +@module.event('1001') +@module.rule('.*') +def bot_events_ready(bot, trigger): + bot_logging(bot, 'SpiceBot_Events', "Ready To Process module setup procedures") + bot_events_trigger(bot, 1002, "Ready To Process module setup procedures") + bot_events_set_complete(bot, '1002') + + while not bot_events_startup_check(bot): + pass + bot_events_trigger(bot, 1004, "All registered modules setup procedures have completed") + bot_events_set_complete(bot, '1004') + + +@module.event('1004') +@module.rule('.*') +def bot_events_monologue(bot, trigger): + bot.osd('SpiceBot_Events complete', bot.channels.keys()) + + +@module.event('001') +@module.rule('.*') +def bot_startup_connection(bot, trigger): + + if bot_events_check(bot, '1004'): + return + + while not len(bot.channels.keys()) > 0: + pass + time.sleep(1) + bot_events_trigger(bot, 1003, "Bot Connected to IRC") + + bot_events_set_complete(bot, '1003') + + +def bot_events_trigger(bot, number, message): + + bot_events_setup_check(bot) + + bot.memory["SpiceBot_Events"]["triggers"][str(number)] = message + + pretrigger = trigger.PreTrigger( bot.nick, ":SpiceBot_Events " + str(number) + " " + str(bot.nick) + " :" + message ) bot.dispatch(pretrigger) + + +def bot_events_setup_check(bot): + if "SpiceBot_Events" not in bot.memory: + bot.memory["SpiceBot_Events"] = {"triggers": {}, "startup": [], "loaded": []} + + +def bot_events_check(bot, listreq): + + bot_events_setup_check(bot) + + if not isinstance(listreq, list): + listreq = [str(listreq)] + + for requirement in listreq: + if requirement not in bot.memory["SpiceBot_Events"]["loaded"]: + return False + + return True + + +def bot_event_startup_register(bot, addonreq): + + bot_events_setup_check(bot) + + if not isinstance(addonreq, list): + addonreq = [str(addonreq)] + + bot.memory["SpiceBot_Events"]["startup"].extend(addonreq) + + +def bot_events_set_complete(bot, addonreq): + + bot_events_setup_check(bot) + + if not isinstance(addonreq, list): + addonreq = [str(addonreq)] + + bot.memory["Sopel_LoadOrder"]["loaded"].extend(addonreq) + + +def bot_events_startup_check(bot): + + bot_events_setup_check(bot) + + for startupitem in bot.memory["SpiceBot_Events"]["startup"]: + if str(startupitem) not in bot.memory["SpiceBot_Events"]["loaded"]: + return False + + return True From ff73ed23f8fd2f52f6d84ca0dfeabd00297912f2 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 19:48:01 -0400 Subject: [PATCH 17/53] Additional Testing before integration --- sopel_modules/SpiceBot_Events/Events.py | 50 ++++++++++++++----------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/sopel_modules/SpiceBot_Events/Events.py b/sopel_modules/SpiceBot_Events/Events.py index b100010..ecbc8b6 100644 --- a/sopel_modules/SpiceBot_Events/Events.py +++ b/sopel_modules/SpiceBot_Events/Events.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals, absolute_import, print_function, division # sopel imports -from sopel import module, trigger +import sopel from sopel_modules.SpiceBot_SBTools import bot_logging @@ -17,9 +17,8 @@ def configure(config): def setup(bot): bot_logging(bot, 'SpiceBot_Events', "Starting setup procedure.") bot_events_setup_check(bot) - bot_event_startup_register(bot, ['1001', '1002', '1003', '1004']) + bot_events_startup_register(bot, ['1001', '1002', '1003', '1004']) bot_events_trigger(bot, 1001, "Welcome to the SpiceBot Events System") - bot_events_set_complete(bot, '1001') def shutdown(bot): @@ -27,27 +26,40 @@ def shutdown(bot): del bot.memory["SpiceBot_Events"] -@module.event('1001') -@module.rule('.*') -def bot_events_ready(bot, trigger): +@sopel.module.event('1001') +@sopel.module.rule('.*') +def bot_events_start(bot, trigger): + bot_events_recieved(bot, trigger.event) + bot_logging(bot, 'SpiceBot_Events', "Ready To Process module setup procedures") bot_events_trigger(bot, 1002, "Ready To Process module setup procedures") - bot_events_set_complete(bot, '1002') while not bot_events_startup_check(bot): pass bot_events_trigger(bot, 1004, "All registered modules setup procedures have completed") - bot_events_set_complete(bot, '1004') -@module.event('1004') -@module.rule('.*') +@sopel.module.event('1002') +@sopel.module.rule('.*') +def bot_events_ready(bot, trigger): + bot_events_recieved(bot, trigger.event) + + +@sopel.module.event('1003') +@sopel.module.rule('.*') +def bot_events_connected(bot, trigger): + bot_events_recieved(bot, trigger.event) + + +@sopel.module.event('1004') +@sopel.module.rule('.*') def bot_events_monologue(bot, trigger): + bot_events_recieved(bot, trigger.event) bot.osd('SpiceBot_Events complete', bot.channels.keys()) -@module.event('001') -@module.rule('.*') +@sopel.module.event('001') +@sopel.module.rule('.*') def bot_startup_connection(bot, trigger): if bot_events_check(bot, '1004'): @@ -58,8 +70,6 @@ def bot_startup_connection(bot, trigger): time.sleep(1) bot_events_trigger(bot, 1003, "Bot Connected to IRC") - bot_events_set_complete(bot, '1003') - def bot_events_trigger(bot, number, message): @@ -67,7 +77,7 @@ def bot_events_trigger(bot, number, message): bot.memory["SpiceBot_Events"]["triggers"][str(number)] = message - pretrigger = trigger.PreTrigger( + pretrigger = sopel.trigger.PreTrigger( bot.nick, ":SpiceBot_Events " + str(number) + " " + str(bot.nick) + " :" + message ) @@ -93,7 +103,7 @@ def bot_events_check(bot, listreq): return True -def bot_event_startup_register(bot, addonreq): +def bot_events_startup_register(bot, addonreq): bot_events_setup_check(bot) @@ -103,14 +113,12 @@ def bot_event_startup_register(bot, addonreq): bot.memory["SpiceBot_Events"]["startup"].extend(addonreq) -def bot_events_set_complete(bot, addonreq): +def bot_events_recieved(bot, number): bot_events_setup_check(bot) - if not isinstance(addonreq, list): - addonreq = [str(addonreq)] - - bot.memory["Sopel_LoadOrder"]["loaded"].extend(addonreq) + if str(number) not in bot.memory["SpiceBot_Events"]["loaded"]: + bot.memory["SpiceBot_Events"]["loaded"].append(str(number)) def bot_events_startup_check(bot): From 8cfa4166d393a99425c1449476e62b11b5a39de8 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 19:51:58 -0400 Subject: [PATCH 18/53] Moar tests --- sopel_modules/SpiceBot_Events/Events.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Events/Events.py b/sopel_modules/SpiceBot_Events/Events.py index ecbc8b6..d30c75f 100644 --- a/sopel_modules/SpiceBot_Events/Events.py +++ b/sopel_modules/SpiceBot_Events/Events.py @@ -18,7 +18,6 @@ def setup(bot): bot_logging(bot, 'SpiceBot_Events', "Starting setup procedure.") bot_events_setup_check(bot) bot_events_startup_register(bot, ['1001', '1002', '1003', '1004']) - bot_events_trigger(bot, 1001, "Welcome to the SpiceBot Events System") def shutdown(bot): @@ -61,6 +60,7 @@ def bot_events_monologue(bot, trigger): @sopel.module.event('001') @sopel.module.rule('.*') def bot_startup_connection(bot, trigger): + bot_events_trigger(bot, 1001, "Welcome to the SpiceBot Events System") if bot_events_check(bot, '1004'): return From 6ab6d263311d6ebfdf6a915850bc70f30f615a61 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 19:57:17 -0400 Subject: [PATCH 19/53] split events --- sopel_modules/SpiceBot_Events/Events.py | 106 +++------------------- sopel_modules/SpiceBot_Events/System.py | 84 +++++++++++++++++ sopel_modules/SpiceBot_Events/__init__.py | 1 + 3 files changed, 100 insertions(+), 91 deletions(-) create mode 100644 sopel_modules/SpiceBot_Events/System.py diff --git a/sopel_modules/SpiceBot_Events/Events.py b/sopel_modules/SpiceBot_Events/Events.py index d30c75f..49b4456 100644 --- a/sopel_modules/SpiceBot_Events/Events.py +++ b/sopel_modules/SpiceBot_Events/Events.py @@ -1,28 +1,27 @@ -#!/usr/bin/env python -#coding=utf-8 -from __future__ import unicode_literals, absolute_import, print_function, division +# coding=utf-8 -# sopel imports -import sopel +from __future__ import unicode_literals, absolute_import, division, print_function +import sopel.module + +from .System import bot_events_trigger, bot_events_recieved, bot_events_startup_check, bot_events_check from sopel_modules.SpiceBot_SBTools import bot_logging import time -def configure(config): - pass +@sopel.module.event('001') +@sopel.module.rule('.*') +def bot_startup_connection(bot, trigger): + bot_events_trigger(bot, 1001, "Welcome to the SpiceBot Events System") + if bot_events_check(bot, '1004'): + return -def setup(bot): - bot_logging(bot, 'SpiceBot_Events', "Starting setup procedure.") - bot_events_setup_check(bot) - bot_events_startup_register(bot, ['1001', '1002', '1003', '1004']) - - -def shutdown(bot): - if "SpiceBot_Events" in bot.memory: - del bot.memory["SpiceBot_Events"] + while not len(bot.channels.keys()) > 0: + pass + time.sleep(1) + bot_events_trigger(bot, 1003, "Bot Connected to IRC") @sopel.module.event('1001') @@ -55,78 +54,3 @@ def bot_events_connected(bot, trigger): def bot_events_monologue(bot, trigger): bot_events_recieved(bot, trigger.event) bot.osd('SpiceBot_Events complete', bot.channels.keys()) - - -@sopel.module.event('001') -@sopel.module.rule('.*') -def bot_startup_connection(bot, trigger): - bot_events_trigger(bot, 1001, "Welcome to the SpiceBot Events System") - - if bot_events_check(bot, '1004'): - return - - while not len(bot.channels.keys()) > 0: - pass - time.sleep(1) - bot_events_trigger(bot, 1003, "Bot Connected to IRC") - - -def bot_events_trigger(bot, number, message): - - bot_events_setup_check(bot) - - bot.memory["SpiceBot_Events"]["triggers"][str(number)] = message - - pretrigger = sopel.trigger.PreTrigger( - bot.nick, - ":SpiceBot_Events " + str(number) + " " + str(bot.nick) + " :" + message - ) - bot.dispatch(pretrigger) - - -def bot_events_setup_check(bot): - if "SpiceBot_Events" not in bot.memory: - bot.memory["SpiceBot_Events"] = {"triggers": {}, "startup": [], "loaded": []} - - -def bot_events_check(bot, listreq): - - bot_events_setup_check(bot) - - if not isinstance(listreq, list): - listreq = [str(listreq)] - - for requirement in listreq: - if requirement not in bot.memory["SpiceBot_Events"]["loaded"]: - return False - - return True - - -def bot_events_startup_register(bot, addonreq): - - bot_events_setup_check(bot) - - if not isinstance(addonreq, list): - addonreq = [str(addonreq)] - - bot.memory["SpiceBot_Events"]["startup"].extend(addonreq) - - -def bot_events_recieved(bot, number): - - bot_events_setup_check(bot) - - if str(number) not in bot.memory["SpiceBot_Events"]["loaded"]: - bot.memory["SpiceBot_Events"]["loaded"].append(str(number)) - - -def bot_events_startup_check(bot): - - bot_events_setup_check(bot) - - for startupitem in bot.memory["SpiceBot_Events"]["startup"]: - if str(startupitem) not in bot.memory["SpiceBot_Events"]["loaded"]: - return False - - return True diff --git a/sopel_modules/SpiceBot_Events/System.py b/sopel_modules/SpiceBot_Events/System.py new file mode 100644 index 0000000..c32a7fd --- /dev/null +++ b/sopel_modules/SpiceBot_Events/System.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python +#coding=utf-8 +from __future__ import unicode_literals, absolute_import, print_function, division + +# sopel imports +import sopel + +from sopel_modules.SpiceBot_SBTools import bot_logging + + +def configure(config): + pass + + +def setup(bot): + bot_logging(bot, 'SpiceBot_Events', "Starting setup procedure.") + bot_events_setup_check(bot) + bot_events_startup_register(bot, ['1001', '1002', '1003', '1004']) + + +def shutdown(bot): + if "SpiceBot_Events" in bot.memory: + del bot.memory["SpiceBot_Events"] + + +def bot_events_trigger(bot, number, message): + + bot_events_setup_check(bot) + + bot.memory["SpiceBot_Events"]["triggers"][str(number)] = message + + pretrigger = sopel.trigger.PreTrigger( + bot.nick, + ":SpiceBot_Events " + str(number) + " " + str(bot.nick) + " :" + message + ) + bot.dispatch(pretrigger) + + +def bot_events_setup_check(bot): + if "SpiceBot_Events" not in bot.memory: + bot.memory["SpiceBot_Events"] = {"triggers": {}, "startup": [], "loaded": []} + + +def bot_events_check(bot, listreq): + + bot_events_setup_check(bot) + + if not isinstance(listreq, list): + listreq = [str(listreq)] + + for requirement in listreq: + if requirement not in bot.memory["SpiceBot_Events"]["loaded"]: + return False + + return True + + +def bot_events_startup_register(bot, addonreq): + + bot_events_setup_check(bot) + + if not isinstance(addonreq, list): + addonreq = [str(addonreq)] + + bot.memory["SpiceBot_Events"]["startup"].extend(addonreq) + + +def bot_events_recieved(bot, number): + + bot_events_setup_check(bot) + + if str(number) not in bot.memory["SpiceBot_Events"]["loaded"]: + bot.memory["SpiceBot_Events"]["loaded"].append(str(number)) + + +def bot_events_startup_check(bot): + + bot_events_setup_check(bot) + + for startupitem in bot.memory["SpiceBot_Events"]["startup"]: + if str(startupitem) not in bot.memory["SpiceBot_Events"]["loaded"]: + return False + + return True diff --git a/sopel_modules/SpiceBot_Events/__init__.py b/sopel_modules/SpiceBot_Events/__init__.py index 2e6b7d5..532880f 100644 --- a/sopel_modules/SpiceBot_Events/__init__.py +++ b/sopel_modules/SpiceBot_Events/__init__.py @@ -1,6 +1,7 @@ # coding=utf8 from __future__ import unicode_literals, absolute_import, division, print_function +from .System import * from .Events import * __author__ = 'Sam Zick' From 342967352a137b0c2a6b66f4782f49ad5a28202e Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 20:03:11 -0400 Subject: [PATCH 20/53] Better Logging --- sopel_modules/SpiceBot_Events/Events.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot_Events/Events.py b/sopel_modules/SpiceBot_Events/Events.py index 49b4456..a01caf9 100644 --- a/sopel_modules/SpiceBot_Events/Events.py +++ b/sopel_modules/SpiceBot_Events/Events.py @@ -27,9 +27,9 @@ def bot_startup_connection(bot, trigger): @sopel.module.event('1001') @sopel.module.rule('.*') def bot_events_start(bot, trigger): + bot_logging(bot, 'SpiceBot_Events', trigger.args[1]) bot_events_recieved(bot, trigger.event) - bot_logging(bot, 'SpiceBot_Events', "Ready To Process module setup procedures") bot_events_trigger(bot, 1002, "Ready To Process module setup procedures") while not bot_events_startup_check(bot): @@ -40,17 +40,20 @@ def bot_events_start(bot, trigger): @sopel.module.event('1002') @sopel.module.rule('.*') def bot_events_ready(bot, trigger): + bot_logging(bot, 'SpiceBot_Events', trigger.args[1]) bot_events_recieved(bot, trigger.event) @sopel.module.event('1003') @sopel.module.rule('.*') def bot_events_connected(bot, trigger): + bot_logging(bot, 'SpiceBot_Events', trigger.args[1]) bot_events_recieved(bot, trigger.event) @sopel.module.event('1004') @sopel.module.rule('.*') def bot_events_monologue(bot, trigger): + bot_logging(bot, 'SpiceBot_Events', trigger.args[1]) bot_events_recieved(bot, trigger.event) - bot.osd('SpiceBot_Events complete', bot.channels.keys()) + bot.osd(trigger.args[1], bot.channels.keys()) From dd09221a311055ba00921360edfa48e5b0d7dc01 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 20:07:47 -0400 Subject: [PATCH 21/53] Attempt pre-connection --- sopel_modules/SpiceBot_Events/Events.py | 1 - sopel_modules/SpiceBot_Events/System.py | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Events/Events.py b/sopel_modules/SpiceBot_Events/Events.py index a01caf9..32c2575 100644 --- a/sopel_modules/SpiceBot_Events/Events.py +++ b/sopel_modules/SpiceBot_Events/Events.py @@ -13,7 +13,6 @@ import time @sopel.module.event('001') @sopel.module.rule('.*') def bot_startup_connection(bot, trigger): - bot_events_trigger(bot, 1001, "Welcome to the SpiceBot Events System") if bot_events_check(bot, '1004'): return diff --git a/sopel_modules/SpiceBot_Events/System.py b/sopel_modules/SpiceBot_Events/System.py index c32a7fd..bf9d36b 100644 --- a/sopel_modules/SpiceBot_Events/System.py +++ b/sopel_modules/SpiceBot_Events/System.py @@ -16,6 +16,7 @@ def setup(bot): bot_logging(bot, 'SpiceBot_Events', "Starting setup procedure.") bot_events_setup_check(bot) bot_events_startup_register(bot, ['1001', '1002', '1003', '1004']) + bot_events_trigger(bot, 1001, "Welcome to the SpiceBot Events System") def shutdown(bot): From fe58594a277d7824fbe185fac5031674409405a0 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 20:08:29 -0400 Subject: [PATCH 22/53] monologue does not occur with old logic --- sopel_modules/SpiceBot_Events/System.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Events/System.py b/sopel_modules/SpiceBot_Events/System.py index bf9d36b..9bbef62 100644 --- a/sopel_modules/SpiceBot_Events/System.py +++ b/sopel_modules/SpiceBot_Events/System.py @@ -15,7 +15,7 @@ def configure(config): def setup(bot): bot_logging(bot, 'SpiceBot_Events', "Starting setup procedure.") bot_events_setup_check(bot) - bot_events_startup_register(bot, ['1001', '1002', '1003', '1004']) + bot_events_startup_register(bot, ['1001', '1002', '1003']) bot_events_trigger(bot, 1001, "Welcome to the SpiceBot Events System") From 3141d44465ee1c20a321c90033150c03e7a3c2cc Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 20:11:25 -0400 Subject: [PATCH 23/53] pre-connection does not work --- sopel_modules/SpiceBot_Events/Events.py | 1 + sopel_modules/SpiceBot_Events/System.py | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Events/Events.py b/sopel_modules/SpiceBot_Events/Events.py index 32c2575..a01caf9 100644 --- a/sopel_modules/SpiceBot_Events/Events.py +++ b/sopel_modules/SpiceBot_Events/Events.py @@ -13,6 +13,7 @@ import time @sopel.module.event('001') @sopel.module.rule('.*') def bot_startup_connection(bot, trigger): + bot_events_trigger(bot, 1001, "Welcome to the SpiceBot Events System") if bot_events_check(bot, '1004'): return diff --git a/sopel_modules/SpiceBot_Events/System.py b/sopel_modules/SpiceBot_Events/System.py index 9bbef62..da5723d 100644 --- a/sopel_modules/SpiceBot_Events/System.py +++ b/sopel_modules/SpiceBot_Events/System.py @@ -16,7 +16,6 @@ def setup(bot): bot_logging(bot, 'SpiceBot_Events', "Starting setup procedure.") bot_events_setup_check(bot) bot_events_startup_register(bot, ['1001', '1002', '1003']) - bot_events_trigger(bot, 1001, "Welcome to the SpiceBot Events System") def shutdown(bot): From f493a5ae2bd03634a24d866f1520b90faca39487 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 20:42:56 -0400 Subject: [PATCH 24/53] Add Channels to new event system --- sopel_modules/SpiceBot_Channels/Channels.py | 168 +++--------------- .../SpiceBot_Channels/Channels_Command.py | 120 +++++++++++++ .../SpiceBot_Channels/Channels_Parsing.py | 32 ++++ sopel_modules/SpiceBot_Channels/__init__.py | 2 + sopel_modules/SpiceBot_Events/Events.py | 1 - sopel_modules/SpiceBot_Events/System.py | 2 +- 6 files changed, 177 insertions(+), 148 deletions(-) create mode 100644 sopel_modules/SpiceBot_Channels/Channels_Command.py create mode 100644 sopel_modules/SpiceBot_Channels/Channels_Parsing.py diff --git a/sopel_modules/SpiceBot_Channels/Channels.py b/sopel_modules/SpiceBot_Channels/Channels.py index 42d94e9..103df07 100644 --- a/sopel_modules/SpiceBot_Channels/Channels.py +++ b/sopel_modules/SpiceBot_Channels/Channels.py @@ -6,18 +6,18 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi import sopel.module from sopel.config.types import StaticSection, ValidatedAttribute, ListAttribute -from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, startup_bot_event - -import time - -import spicemanip +from sopel_modules.SpiceBot_LoadOrder.LoadOrder import startup_bot_event, set_bot_event +from sopel_modules.SpiceBot_Events.System import bot_events_startup_register, bot_events_recieved, bot_events_trigger from sopel_modules.SpiceBot_SBTools import ( - sopel_triggerargs, inlist, topic_compile, channel_privs, join_all_channels, chanadmin_all_channels, channel_list_current, bot_logging ) +import spicemanip + +import time + class SpiceBot_Channels_MainSection(StaticSection): announcenew = ValidatedAttribute('announcenew', default=False) @@ -35,20 +35,14 @@ def configure(config): def setup(bot): - bot_logging(bot, 'SpiceBot_Channels', "Initial Setup processing") + bot_logging(bot, 'SpiceBot_Channels', "Starting setup procedure") + bot_events_startup_register(bot, ['2001']) startup_bot_event(bot, "SpiceBot_Channels") bot.config.define_section("SpiceBot_Channels", SpiceBot_Channels_MainSection, validate=False) - if 'SpiceBot_Channels' not in bot.memory: - bot.memory['SpiceBot_Channels'] = dict() - if 'channels' not in bot.memory['SpiceBot_Channels'].keys(): - bot.memory['SpiceBot_Channels']['channels'] = dict() - if 'InitialProcess' not in bot.memory['SpiceBot_Channels'].keys(): - bot.memory['SpiceBot_Channels']['InitialProcess'] = False - if 'ProcessLock' not in bot.memory['SpiceBot_Channels'].keys(): - bot.memory['SpiceBot_Channels']['ProcessLock'] = False + bot_channels_setup_check(bot) def shutdown(bot): @@ -56,9 +50,11 @@ def shutdown(bot): del bot.memory["SpiceBot_Channels"] -@sopel.module.event('001') +@sopel.module.event('1003') @sopel.module.rule('.*') def trigger_channel_list_initial(bot, trigger): + bot_logging(bot, 'SpiceBot_Events', trigger.args[1]) + bot_events_recieved(bot, trigger.event) # Unkickable bot.write(('SAMODE', bot.nick, '+q')) @@ -81,6 +77,7 @@ def trigger_channel_list_initial(bot, trigger): foundchannelcount = len(bot.memory['SpiceBot_Channels']['channels'].keys()) bot_logging(bot, 'SpiceBot_Channels', "Channel listing finished! " + str(foundchannelcount) + " channel(s) found.") set_bot_event(bot, "SpiceBot_Channels") + bot_events_trigger(bot, 2001, "SpiceBot_Channels") join_all_channels(bot) chanadmin_all_channels(bot) @@ -111,134 +108,13 @@ def trigger_channel_list_initial(bot, trigger): del bot.memory['SpiceBot_Channels']['channels']["*"] -@sopel.module.event('321') +def bot_channels_setup_check(bot): + if "SpiceBot_Channels" not in bot.memory: + bot.memory["SpiceBot_Channels"] = {"channels": {}, "InitialProcess": False, "ProcessLock": False} + + +@sopel.module.event('2001') @sopel.module.rule('.*') -def watch_chanlist_start(bot, trigger): - bot.memory['SpiceBot_Channels']['ProcessLock'] = True - - -@sopel.module.event('322') -@sopel.module.rule('.*') -def watch_chanlist_populate(bot, trigger): - channel, _, topic = trigger.args[1:] - if channel.lower() not in bot.memory['SpiceBot_Channels']['channels']: - bot.memory['SpiceBot_Channels']['channels'][channel.lower()] = dict() - bot.memory['SpiceBot_Channels']['channels'][channel.lower()]['name'] = channel - bot.memory['SpiceBot_Channels']['channels'][channel.lower()]['topic'] = topic_compile(topic) - bot.memory['SpiceBot_Channels']['ProcessLock'] = True - - -@sopel.module.event('323') -@sopel.module.rule('.*') -def watch_chanlist_complete(bot, trigger): - bot.memory['SpiceBot_Channels']['ProcessLock'] = False - if not bot.memory['SpiceBot_Channels']['InitialProcess']: - bot.memory['SpiceBot_Channels']['InitialProcess'] = True - - -@sopel.module.nickname_commands('channels', 'channel') -def nickname_comand_channels(bot, trigger): - - triggerargs, triggercommand = sopel_triggerargs(bot, trigger, 'nickname_command') - - if not len(triggerargs): - commandused = 'list' - else: - commandused = spicemanip.main(triggerargs, 1).lower() - - triggerargs = spicemanip.main(triggerargs, '2+', 'list') - - channel_list_current(bot) - - if commandused == 'list': - chanlist = spicemanip.main(bot.channels.keys(), 'andlist') - bot.osd("You can find me in " + chanlist) - return - - elif commandused == 'total': - botcount = len(bot.channels.keys()) - servercount = len(bot.memory['SpiceBot_Channels']['channels'].keys()) - bot.osd("I am in " + str(botcount) + " of " + str(servercount) + " channel(s) available on this server.") - return - - elif commandused == 'random': - channel = spicemanip.main(bot.memory['SpiceBot_Channels']['channels'], 'random') - topic = bot.memory['SpiceBot_Channels']['channels'][channel]['topic'] - msg = ["Random channel for you: {}.".format(bot.memory['SpiceBot_Channels']['channels'][channel]['name'])] - if topic and not topic.isspace(): - msg.append("The topic is: {}".format(topic)) - else: - msg.append("Its topic is empty.") - bot.osd(msg) - return - - elif commandused == 'update': - if not trigger.admin: - bot.osd("You do not have permission to update the channel listing.") - return - bot.write(['LIST']) - bot.osd(["[SpiceBot_Channels]", "I am now updating the channel listing for this server."]) - bot.memory['SpiceBot_Channels']['ProcessLock'] = True - while bot.memory['SpiceBot_Channels']['ProcessLock']: - pass - join_all_channels(bot) - foundchannelcount = len(bot.memory['SpiceBot_Channels']['channels'].keys()) - bot.osd("[SpiceBot_Channels]", "Channel listing finished!", str(foundchannelcount) + " channel(s) found.") - return - - elif commandused == 'topic': - if not len(triggerargs): - bot.osd("Channel name input missing.") - return - channel = spicemanip.main(triggerargs, 1) - if not inlist(bot, channel.lower(), bot.memory['SpiceBot_Channels']['channels'].keys()): - bot.osd("Channel name {} not valid.".format(channel)) - return - topic = bot.memory['SpiceBot_Channels']['channels'][channel.lower()]['topic'] - channel = bot.memory['SpiceBot_Channels']['channels'][channel.lower()]['name'] - bot.osd("Topic for {}: {}".format(channel, topic)) - return - - if commandused.upper() in ['OP', 'HOP', 'VOICE', 'OWNER', 'ADMIN']: - if not len(triggerargs): - if trigger.is_privmsg: - bot.osd("Channel name required.") - return - else: - channel = trigger.sender - else: - channel = spicemanip.main(triggerargs, 1) - if not inlist(bot, channel.lower(), bot.memory['SpiceBot_Channels']['channels'].keys()): - bot.osd("Channel name {} not valid.".format(channel)) - return - if not inlist(bot, channel.lower(), bot.channels.keys()): - bot.osd("I need to be in {} to see nick privileges.".format(channel)) - return - - privlist = channel_privs(bot, channel, commandused.upper()) - dispmsg = [] - if not len(privlist): - dispmsg.append("There are no Channel " + commandused.upper() + "s for " + str(channel)) - else: - oplist = spicemanip.main(privlist, 'andlist') - dispmsg.append("Channel " + commandused.upper() + "s for " + str(channel) + " are: " + oplist) - bot.osd(dispmsg, trigger.nick, 'notice') - return - - # Users List - if commandused == 'users': - channel = spicemanip.main(triggerargs, 1) - if not inlist(bot, channel.lower(), bot.memory['SpiceBot_Channels']['channels'].keys()): - bot.osd("Channel name {} not valid.".format(channel)) - return - if not inlist(bot, channel.lower(), bot.channels.keys()): - bot.osd("I need to be in {} to see user list.".format(channel)) - return - dispmsg = [] - if not len(bot.channels[channel].privileges.keys()): - dispmsg.append("There are no Channel users for " + str(channel)) - else: - userslist = spicemanip.main(bot.channels[channel].privileges.keys(), 'andlist') - dispmsg.append("Channel users for " + str(channel) + " are: " + userslist) - bot.osd(dispmsg, trigger.nick, 'notice') - return +def bot_events_setup(bot, trigger): + bot_logging(bot, 'SpiceBot_Events', trigger.args[1]) + bot_events_recieved(bot, trigger.event) diff --git a/sopel_modules/SpiceBot_Channels/Channels_Command.py b/sopel_modules/SpiceBot_Channels/Channels_Command.py new file mode 100644 index 0000000..f678866 --- /dev/null +++ b/sopel_modules/SpiceBot_Channels/Channels_Command.py @@ -0,0 +1,120 @@ +# coding=utf-8 + +from __future__ import unicode_literals, absolute_import, division, print_function + +import sopel.module + +import spicemanip + +from sopel_modules.SpiceBot_SBTools import ( + sopel_triggerargs, inlist, channel_privs, + join_all_channels, channel_list_current, + ) + + +@sopel.module.nickname_commands('channels', 'channel') +def nickname_comand_channels(bot, trigger): + + triggerargs, triggercommand = sopel_triggerargs(bot, trigger, 'nickname_command') + + if not len(triggerargs): + commandused = 'list' + else: + commandused = spicemanip.main(triggerargs, 1).lower() + + triggerargs = spicemanip.main(triggerargs, '2+', 'list') + + channel_list_current(bot) + + if commandused == 'list': + chanlist = spicemanip.main(bot.channels.keys(), 'andlist') + bot.osd("You can find me in " + chanlist) + return + + elif commandused == 'total': + botcount = len(bot.channels.keys()) + servercount = len(bot.memory['SpiceBot_Channels']['channels'].keys()) + bot.osd("I am in " + str(botcount) + " of " + str(servercount) + " channel(s) available on this server.") + return + + elif commandused == 'random': + channel = spicemanip.main(bot.memory['SpiceBot_Channels']['channels'], 'random') + topic = bot.memory['SpiceBot_Channels']['channels'][channel]['topic'] + msg = ["Random channel for you: {}.".format(bot.memory['SpiceBot_Channels']['channels'][channel]['name'])] + if topic and not topic.isspace(): + msg.append("The topic is: {}".format(topic)) + else: + msg.append("Its topic is empty.") + bot.osd(msg) + return + + elif commandused == 'update': + if not trigger.admin: + bot.osd("You do not have permission to update the channel listing.") + return + bot.write(['LIST']) + bot.osd(["[SpiceBot_Channels]", "I am now updating the channel listing for this server."]) + bot.memory['SpiceBot_Channels']['ProcessLock'] = True + while bot.memory['SpiceBot_Channels']['ProcessLock']: + pass + join_all_channels(bot) + foundchannelcount = len(bot.memory['SpiceBot_Channels']['channels'].keys()) + bot.osd("[SpiceBot_Channels]", "Channel listing finished!", str(foundchannelcount) + " channel(s) found.") + return + + elif commandused == 'topic': + if not len(triggerargs): + bot.osd("Channel name input missing.") + return + channel = spicemanip.main(triggerargs, 1) + if not inlist(bot, channel.lower(), bot.memory['SpiceBot_Channels']['channels'].keys()): + bot.osd("Channel name {} not valid.".format(channel)) + return + topic = bot.memory['SpiceBot_Channels']['channels'][channel.lower()]['topic'] + channel = bot.memory['SpiceBot_Channels']['channels'][channel.lower()]['name'] + bot.osd("Topic for {}: {}".format(channel, topic)) + return + + if commandused.upper() in ['OP', 'HOP', 'VOICE', 'OWNER', 'ADMIN']: + if not len(triggerargs): + if trigger.is_privmsg: + bot.osd("Channel name required.") + return + else: + channel = trigger.sender + else: + channel = spicemanip.main(triggerargs, 1) + if not inlist(bot, channel.lower(), bot.memory['SpiceBot_Channels']['channels'].keys()): + bot.osd("Channel name {} not valid.".format(channel)) + return + if not inlist(bot, channel.lower(), bot.channels.keys()): + bot.osd("I need to be in {} to see nick privileges.".format(channel)) + return + + privlist = channel_privs(bot, channel, commandused.upper()) + dispmsg = [] + if not len(privlist): + dispmsg.append("There are no Channel " + commandused.upper() + "s for " + str(channel)) + else: + oplist = spicemanip.main(privlist, 'andlist') + dispmsg.append("Channel " + commandused.upper() + "s for " + str(channel) + " are: " + oplist) + bot.osd(dispmsg, trigger.nick, 'notice') + return + + # Users List + if commandused == 'users': + channel = spicemanip.main(triggerargs, 1) + if not inlist(bot, channel.lower(), bot.memory['SpiceBot_Channels']['channels'].keys()): + bot.osd("Channel name {} not valid.".format(channel)) + return + if not inlist(bot, channel.lower(), bot.channels.keys()): + bot.osd("I need to be in {} to see user list.".format(channel)) + return + dispmsg = [] + if not len(bot.channels[channel].privileges.keys()): + dispmsg.append("There are no Channel users for " + str(channel)) + else: + userslist = spicemanip.main(bot.channels[channel].privileges.keys(), 'andlist') + dispmsg.append("Channel users for " + str(channel) + " are: " + userslist) + bot.osd(dispmsg, trigger.nick, 'notice') + return diff --git a/sopel_modules/SpiceBot_Channels/Channels_Parsing.py b/sopel_modules/SpiceBot_Channels/Channels_Parsing.py new file mode 100644 index 0000000..6998524 --- /dev/null +++ b/sopel_modules/SpiceBot_Channels/Channels_Parsing.py @@ -0,0 +1,32 @@ +# coding=utf-8 + +from __future__ import unicode_literals, absolute_import, division, print_function + +import sopel.module + +from sopel_modules.SpiceBot_SBTools import topic_compile + + +@sopel.module.event('321') +@sopel.module.rule('.*') +def watch_chanlist_start(bot, trigger): + bot.memory['SpiceBot_Channels']['ProcessLock'] = True + + +@sopel.module.event('322') +@sopel.module.rule('.*') +def watch_chanlist_populate(bot, trigger): + channel, _, topic = trigger.args[1:] + if channel.lower() not in bot.memory['SpiceBot_Channels']['channels']: + bot.memory['SpiceBot_Channels']['channels'][channel.lower()] = dict() + bot.memory['SpiceBot_Channels']['channels'][channel.lower()]['name'] = channel + bot.memory['SpiceBot_Channels']['channels'][channel.lower()]['topic'] = topic_compile(topic) + bot.memory['SpiceBot_Channels']['ProcessLock'] = True + + +@sopel.module.event('323') +@sopel.module.rule('.*') +def watch_chanlist_complete(bot, trigger): + bot.memory['SpiceBot_Channels']['ProcessLock'] = False + if not bot.memory['SpiceBot_Channels']['InitialProcess']: + bot.memory['SpiceBot_Channels']['InitialProcess'] = True diff --git a/sopel_modules/SpiceBot_Channels/__init__.py b/sopel_modules/SpiceBot_Channels/__init__.py index fe6cf28..6d0a4e4 100644 --- a/sopel_modules/SpiceBot_Channels/__init__.py +++ b/sopel_modules/SpiceBot_Channels/__init__.py @@ -4,3 +4,5 @@ from __future__ import unicode_literals, absolute_import, print_function, division from .Channels import * +from .Channels_Command import * +from .Channels_Parsing import * diff --git a/sopel_modules/SpiceBot_Events/Events.py b/sopel_modules/SpiceBot_Events/Events.py index a01caf9..6316bd1 100644 --- a/sopel_modules/SpiceBot_Events/Events.py +++ b/sopel_modules/SpiceBot_Events/Events.py @@ -56,4 +56,3 @@ def bot_events_connected(bot, trigger): def bot_events_monologue(bot, trigger): bot_logging(bot, 'SpiceBot_Events', trigger.args[1]) bot_events_recieved(bot, trigger.event) - bot.osd(trigger.args[1], bot.channels.keys()) diff --git a/sopel_modules/SpiceBot_Events/System.py b/sopel_modules/SpiceBot_Events/System.py index da5723d..d96005c 100644 --- a/sopel_modules/SpiceBot_Events/System.py +++ b/sopel_modules/SpiceBot_Events/System.py @@ -13,7 +13,7 @@ def configure(config): def setup(bot): - bot_logging(bot, 'SpiceBot_Events', "Starting setup procedure.") + bot_logging(bot, 'SpiceBot_Events', "Starting setup procedure") bot_events_setup_check(bot) bot_events_startup_register(bot, ['1001', '1002', '1003']) From 14481bff137f9044ccb74d2b33d12734adfd121a Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 21:20:48 -0400 Subject: [PATCH 25/53] Add CommandsQuery to new events system --- sopel_modules/SpiceBot_Channels/Channels.py | 10 +- .../SpiceBot_Channels/Channels_Command.py | 4 + .../SpiceBot_CommandsQuery/CommandsQuery.py | 156 +++--------------- .../SpiceBot_CommandsQuery/QueryCommand.py | 90 ++++++++++ .../SpiceBot_CommandsQuery/__init__.py | 1 + sopel_modules/SpiceBot_Events/Events.py | 2 +- sopel_modules/SpiceBot_GifSearch/gifsearch.py | 3 +- .../SpiceBot_SopelPatches/Patches.py | 14 ++ .../SpiceBot_SopelPatches/__init__.py | 8 + 9 files changed, 148 insertions(+), 140 deletions(-) create mode 100644 sopel_modules/SpiceBot_CommandsQuery/QueryCommand.py create mode 100644 sopel_modules/SpiceBot_SopelPatches/Patches.py create mode 100644 sopel_modules/SpiceBot_SopelPatches/__init__.py diff --git a/sopel_modules/SpiceBot_Channels/Channels.py b/sopel_modules/SpiceBot_Channels/Channels.py index 103df07..5ce9452 100644 --- a/sopel_modules/SpiceBot_Channels/Channels.py +++ b/sopel_modules/SpiceBot_Channels/Channels.py @@ -42,7 +42,8 @@ def setup(bot): bot.config.define_section("SpiceBot_Channels", SpiceBot_Channels_MainSection, validate=False) - bot_channels_setup_check(bot) + if "SpiceBot_Channels" not in bot.memory: + bot.memory["SpiceBot_Channels"] = {"channels": {}, "InitialProcess": False, "ProcessLock": False} def shutdown(bot): @@ -53,7 +54,6 @@ def shutdown(bot): @sopel.module.event('1003') @sopel.module.rule('.*') def trigger_channel_list_initial(bot, trigger): - bot_logging(bot, 'SpiceBot_Events', trigger.args[1]) bot_events_recieved(bot, trigger.event) # Unkickable @@ -108,13 +108,7 @@ def trigger_channel_list_initial(bot, trigger): del bot.memory['SpiceBot_Channels']['channels']["*"] -def bot_channels_setup_check(bot): - if "SpiceBot_Channels" not in bot.memory: - bot.memory["SpiceBot_Channels"] = {"channels": {}, "InitialProcess": False, "ProcessLock": False} - - @sopel.module.event('2001') @sopel.module.rule('.*') def bot_events_setup(bot, trigger): - bot_logging(bot, 'SpiceBot_Events', trigger.args[1]) bot_events_recieved(bot, trigger.event) diff --git a/sopel_modules/SpiceBot_Channels/Channels_Command.py b/sopel_modules/SpiceBot_Channels/Channels_Command.py index f678866..0914447 100644 --- a/sopel_modules/SpiceBot_Channels/Channels_Command.py +++ b/sopel_modules/SpiceBot_Channels/Channels_Command.py @@ -6,6 +6,7 @@ import sopel.module import spicemanip +from sopel_modules.SpiceBot_Events.System import bot_events_check from sopel_modules.SpiceBot_SBTools import ( sopel_triggerargs, inlist, channel_privs, join_all_channels, channel_list_current, @@ -15,6 +16,9 @@ from sopel_modules.SpiceBot_SBTools import ( @sopel.module.nickname_commands('channels', 'channel') def nickname_comand_channels(bot, trigger): + while not bot_events_check(bot, '1004'): + pass + triggerargs, triggercommand = sopel_triggerargs(bot, trigger, 'nickname_command') if not len(triggerargs): diff --git a/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py b/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py index fc2ee60..8c90401 100644 --- a/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py +++ b/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py @@ -6,12 +6,10 @@ import sopel import sopel.module import os -from difflib import SequenceMatcher -from operator import itemgetter -import threading - -from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, check_bot_events, bot_logging +from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, check_bot_events, startup_bot_event +from sopel_modules.SpiceBot_Events.System import bot_events_startup_register, bot_events_recieved, bot_events_trigger +from sopel_modules.SpiceBot_SBTools import bot_logging import spicemanip @@ -21,9 +19,13 @@ def configure(config): def setup(bot): - bot_logging(bot, 'SpiceBot_CommandsQuery', "Evaluating Core Commands List") + bot_logging(bot, 'SpiceBot_CommandsQuery', "Starting setup procedure") + bot_events_startup_register(bot, ['2002']) - threading.Thread(target=setup_thread, args=(bot,)).start() + startup_bot_event(bot, "SpiceBot_CommandsQuery") + + if 'SpiceBot_CommandsQuery' not in bot.memory: + bot.memory['SpiceBot_CommandsQuery'] = {"counts": {}, "commands": {}} def shutdown(bot): @@ -31,16 +33,10 @@ def shutdown(bot): del bot.memory["SpiceBot_CommandsQuery"] -def setup_thread(bot): - - if 'SpiceBot_CommandsQuery' not in bot.memory: - bot.memory['SpiceBot_CommandsQuery'] = dict() - - if 'counts' not in bot.memory['SpiceBot_CommandsQuery'].keys(): - bot.memory['SpiceBot_CommandsQuery']['counts'] = dict() - - if 'commands' not in bot.memory['SpiceBot_CommandsQuery'].keys(): - bot.memory['SpiceBot_CommandsQuery']['commands'] = dict() +@sopel.module.event('1003') +@sopel.module.rule('.*') +def trigger_command_list_initial(bot, trigger): + bot_events_recieved(bot, trigger.event) for comtype in ['module', 'nickname', 'rule']: if comtype not in bot.memory['SpiceBot_CommandsQuery']['counts'].keys(): @@ -159,129 +155,25 @@ def setup_thread(bot): for comtype in ['module', 'nickname', 'rule']: bot_logging(bot, 'SpiceBot_CommandsQuery', "Found " + str(len(bot.memory['SpiceBot_CommandsQuery']['commands'][comtype].keys())) + " " + comtype + " commands.") - while not check_bot_events(bot, ["startup_complete"]): - pass + set_bot_event(bot, "SpiceBot_CommandsQuery") + bot_events_trigger(bot, 2002, "SpiceBot_CommandsQuery") + + +@sopel.module.event('1004') +@sopel.module.rule('.*') +def bot_events_complete(bot, trigger): + bot_events_recieved(bot, trigger.event) for comtype in bot.memory['SpiceBot_CommandsQuery']['commands'].keys(): if comtype not in ['module', 'nickname', 'rule']: bot_logging(bot, 'SpiceBot_CommandsQuery', "Found " + str(len(bot.memory['SpiceBot_CommandsQuery']['commands'][comtype].keys())) + " " + comtype + " commands.") - set_bot_event(bot, "SpiceBot_CommandsQuery") - - -@sopel.module.rule('^\?(.*)') -def query_detection(bot, trigger): - - while "SpiceBot_CommandsQuery" not in bot.memory: - pass - - # command must start with - if not str(trigger).startswith(tuple(['?'])): - return - - commands_list = dict() - for commandstype in bot.memory['SpiceBot_CommandsQuery']['commands'].keys(): - for com in bot.memory['SpiceBot_CommandsQuery']['commands'][commandstype].keys(): - if com not in commands_list.keys(): - commands_list[com] = bot.memory['SpiceBot_CommandsQuery']['commands'][commandstype][com] - - triggerargsarray = spicemanip.main(trigger, 'create') - - # command issued, check if valid - querycommand = spicemanip.main(triggerargsarray, 1).lower()[1:] - if len(querycommand) == 1: - commandlist = [] - for command in commands_list.keys(): - if command.lower().startswith(querycommand): - commandlist.append(command) - if commandlist == []: - bot.notice("No commands match " + str(querycommand) + ".", trigger.nick) - return - else: - bot.notice("The following commands match " + str(querycommand) + ": " + spicemanip.main(commandlist, 'andlist') + ".", trigger.nick) - return - - elif querycommand.endswith(tuple(["+"])): - querycommand = querycommand[:-1] - if querycommand not in commands_list.keys(): - bot.notice("The " + str(querycommand) + " does not appear to be valid.") - return - realcom = querycommand - if "aliasfor" in commands_list[querycommand].keys(): - realcom = commands_list[querycommand]["aliasfor"] - validcomlist = commands_list[realcom]["validcoms"] - bot.notice("The following commands match " + str(querycommand) + ": " + spicemanip.main(validcomlist, 'andlist') + ".", trigger.nick) - return - - elif querycommand.endswith(tuple(['?'])): - querycommand = querycommand[:-1] - sim_com, sim_num = [], [] - for com in commands_list.keys(): - similarlevel = SequenceMatcher(None, querycommand.lower(), com.lower()).ratio() - sim_com.append(com) - sim_num.append(similarlevel) - sim_num, sim_com = (list(x) for x in zip(*sorted(zip(sim_num, sim_com), key=itemgetter(0)))) - closestmatch = spicemanip.main(sim_com, 'reverse', "list") - listnumb, relist = 1, [] - for item in closestmatch: - if listnumb <= 10: - relist.append(str(item)) - listnumb += 1 - bot.notice("The following commands may match " + str(querycommand) + ": " + spicemanip.main(relist, 'andlist') + ".", trigger.nick) - return - - elif querycommand in commands_list.keys(): - bot.notice("The following commands match " + str(querycommand) + ": " + str(querycommand) + ".", trigger.nick) - return - - elif not querycommand: - return - - else: - commandlist = [] - for command in commands_list.keys(): - if command.lower().startswith(querycommand): - commandlist.append(command) - if commandlist == []: - bot.notice("No commands match " + str(querycommand) + ".", trigger.nick) - return - else: - bot.notice("The following commands match " + str(querycommand) + ": " + spicemanip.main(commandlist, 'andlist') + ".", trigger.nick) - return - - -def commandsquery_register_type(bot, command_type): - if 'SpiceBot_CommandsQuery' not in bot.memory: - bot.memory['SpiceBot_CommandsQuery'] = dict() - - if 'counts' not in bot.memory['SpiceBot_CommandsQuery'].keys(): - bot.memory['SpiceBot_CommandsQuery']['counts'] = dict() - - if 'commands' not in bot.memory['SpiceBot_CommandsQuery'].keys(): - bot.memory['SpiceBot_CommandsQuery']['commands'] = dict() - - if command_type not in bot.memory['SpiceBot_CommandsQuery'].keys(): - if command_type not in bot.memory['SpiceBot_CommandsQuery']['counts'].keys(): - bot.memory['SpiceBot_CommandsQuery']['counts'][command_type] = 0 - if command_type not in bot.memory['SpiceBot_CommandsQuery']['commands'].keys(): - bot.memory['SpiceBot_CommandsQuery']['commands'][command_type] = dict() - bot.memory['SpiceBot_CommandsQuery']['counts'][command_type] += 1 - def commandsquery_register(bot, command_type, validcoms, aliasfor=None): if not isinstance(validcoms, list): validcoms = [validcoms] - if 'SpiceBot_CommandsQuery' not in bot.memory: - bot.memory['SpiceBot_CommandsQuery'] = dict() - - if 'counts' not in bot.memory['SpiceBot_CommandsQuery'].keys(): - bot.memory['SpiceBot_CommandsQuery']['counts'] = dict() - - if 'commands' not in bot.memory['SpiceBot_CommandsQuery'].keys(): - bot.memory['SpiceBot_CommandsQuery']['commands'] = dict() - if command_type not in bot.memory['SpiceBot_CommandsQuery'].keys(): if command_type not in bot.memory['SpiceBot_CommandsQuery']['counts'].keys(): bot.memory['SpiceBot_CommandsQuery']['counts'][command_type] = 0 @@ -309,3 +201,9 @@ def commandsquery_register(bot, command_type, validcoms, aliasfor=None): for comalias in comaliases: if comalias not in bot.memory['SpiceBot_CommandsQuery']['commands'][command_type].keys(): bot.memory['SpiceBot_CommandsQuery']['commands'][command_type][comalias] = {"aliasfor": aliasfor} + + +@sopel.module.event('2002') +@sopel.module.rule('.*') +def bot_events_setup(bot, trigger): + bot_events_recieved(bot, trigger.event) diff --git a/sopel_modules/SpiceBot_CommandsQuery/QueryCommand.py b/sopel_modules/SpiceBot_CommandsQuery/QueryCommand.py new file mode 100644 index 0000000..14fceb6 --- /dev/null +++ b/sopel_modules/SpiceBot_CommandsQuery/QueryCommand.py @@ -0,0 +1,90 @@ +# coding=utf-8 + +from __future__ import unicode_literals, absolute_import, division, print_function + +import sopel +import sopel.module + +from difflib import SequenceMatcher +from operator import itemgetter + +from sopel_modules.SpiceBot_Events.System import bot_events_check + +import spicemanip + + +@sopel.module.rule('^\?(.*)') +def query_detection(bot, trigger): + + while not bot_events_check(bot, '2002'): + pass + + commands_list = dict() + for commandstype in bot.memory['SpiceBot_CommandsQuery']['commands'].keys(): + for com in bot.memory['SpiceBot_CommandsQuery']['commands'][commandstype].keys(): + if com not in commands_list.keys(): + commands_list[com] = bot.memory['SpiceBot_CommandsQuery']['commands'][commandstype][com] + + triggerargsarray = spicemanip.main(trigger, 'create') + + # command issued, check if valid + querycommand = spicemanip.main(triggerargsarray, 1).lower()[1:] + if len(querycommand) == 1: + commandlist = [] + for command in commands_list.keys(): + if command.lower().startswith(querycommand): + commandlist.append(command) + if commandlist == []: + bot.notice("No commands match " + str(querycommand) + ".", trigger.nick) + return + else: + bot.notice("The following commands match " + str(querycommand) + ": " + spicemanip.main(commandlist, 'andlist') + ".", trigger.nick) + return + + elif querycommand.endswith(tuple(["+"])): + querycommand = querycommand[:-1] + if querycommand not in commands_list.keys(): + bot.notice("The " + str(querycommand) + " does not appear to be valid.") + return + realcom = querycommand + if "aliasfor" in commands_list[querycommand].keys(): + realcom = commands_list[querycommand]["aliasfor"] + validcomlist = commands_list[realcom]["validcoms"] + bot.notice("The following commands match " + str(querycommand) + ": " + spicemanip.main(validcomlist, 'andlist') + ".", trigger.nick) + return + + elif querycommand.endswith(tuple(['?'])): + querycommand = querycommand[:-1] + sim_com, sim_num = [], [] + for com in commands_list.keys(): + similarlevel = SequenceMatcher(None, querycommand.lower(), com.lower()).ratio() + sim_com.append(com) + sim_num.append(similarlevel) + sim_num, sim_com = (list(x) for x in zip(*sorted(zip(sim_num, sim_com), key=itemgetter(0)))) + closestmatch = spicemanip.main(sim_com, 'reverse', "list") + listnumb, relist = 1, [] + for item in closestmatch: + if listnumb <= 10: + relist.append(str(item)) + listnumb += 1 + bot.notice("The following commands may match " + str(querycommand) + ": " + spicemanip.main(relist, 'andlist') + ".", trigger.nick) + return + + elif querycommand in commands_list.keys(): + bot.notice("The following commands match " + str(querycommand) + ": " + str(querycommand) + ".", trigger.nick) + return + + elif not querycommand: + return + + else: + commandlist = [] + for command in commands_list.keys(): + if command.lower().startswith(querycommand): + commandlist.append(command) + if commandlist == []: + bot.notice("No commands match " + str(querycommand) + ".", trigger.nick) + return + else: + bot.notice("The following commands match " + str(querycommand) + ": " + spicemanip.main(commandlist, 'andlist') + ".", trigger.nick) + return diff --git a/sopel_modules/SpiceBot_CommandsQuery/__init__.py b/sopel_modules/SpiceBot_CommandsQuery/__init__.py index c2c2e86..c439020 100644 --- a/sopel_modules/SpiceBot_CommandsQuery/__init__.py +++ b/sopel_modules/SpiceBot_CommandsQuery/__init__.py @@ -6,6 +6,7 @@ Sopel Commands Query responds to ? to display commands matching patterns from __future__ import unicode_literals, absolute_import, division, print_function from .CommandsQuery import * +from . QueryCommand import * __author__ = 'Sam Zick' __email__ = 'sam@deathbybandaid.net' diff --git a/sopel_modules/SpiceBot_Events/Events.py b/sopel_modules/SpiceBot_Events/Events.py index 6316bd1..66d1451 100644 --- a/sopel_modules/SpiceBot_Events/Events.py +++ b/sopel_modules/SpiceBot_Events/Events.py @@ -53,6 +53,6 @@ def bot_events_connected(bot, trigger): @sopel.module.event('1004') @sopel.module.rule('.*') -def bot_events_monologue(bot, trigger): +def bot_events_complete(bot, trigger): bot_logging(bot, 'SpiceBot_Events', trigger.args[1]) bot_events_recieved(bot, trigger.event) diff --git a/sopel_modules/SpiceBot_GifSearch/gifsearch.py b/sopel_modules/SpiceBot_GifSearch/gifsearch.py index c68f958..52ff480 100644 --- a/sopel_modules/SpiceBot_GifSearch/gifsearch.py +++ b/sopel_modules/SpiceBot_GifSearch/gifsearch.py @@ -7,7 +7,7 @@ from sopel.config.types import StaticSection, ValidatedAttribute from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, startup_bot_event -from sopel_modules.SpiceBot_CommandsQuery.CommandsQuery import commandsquery_register, commandsquery_register_type +from sopel_modules.SpiceBot_CommandsQuery.CommandsQuery import commandsquery_register from sopel_modules.SpiceBot_SBTools import read_directory_json_to_dict, sopel_triggerargs, bot_logging @@ -90,7 +90,6 @@ def setup_thread(bot): valid_gif_api_dict[gif_api]["apikey"] = None bot.memory["SpiceBot_GifSearch"]['valid_gif_api_dict'][gif_api] = valid_gif_api_dict[gif_api] - commandsquery_register_type(bot, "prefix") for prefixcommand in bot.memory["SpiceBot_GifSearch"]['valid_gif_api_dict'].keys(): commandsquery_register(bot, "prefix", prefixcommand) diff --git a/sopel_modules/SpiceBot_SopelPatches/Patches.py b/sopel_modules/SpiceBot_SopelPatches/Patches.py new file mode 100644 index 0000000..90b1433 --- /dev/null +++ b/sopel_modules/SpiceBot_SopelPatches/Patches.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +# coding=utf-8 +from __future__ import unicode_literals, absolute_import, print_function, division + +# sopel imports +import sopel.module + +from sopel_modules.SpiceBot_SBTools import bot_logging + + +def setup(bot): + bot_logging(bot, 'Sopel_Patch', "Patching Sopels built-in url_callbacks") + if 'url_callbacks' not in bot.memory: + bot.memory['url_callbacks'] = sopel.tools.SopelMemory() diff --git a/sopel_modules/SpiceBot_SopelPatches/__init__.py b/sopel_modules/SpiceBot_SopelPatches/__init__.py new file mode 100644 index 0000000..0232bc1 --- /dev/null +++ b/sopel_modules/SpiceBot_SopelPatches/__init__.py @@ -0,0 +1,8 @@ +# coding=utf8 +from __future__ import unicode_literals, absolute_import, division, print_function + +from .Patches import * + +__author__ = 'Sam Zick' +__email__ = 'sam@deathbybandaid.net' +__version__ = '0.1.1' From 072d4167ed91808ac6d6440e0a52d89845db29af Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 21:29:20 -0400 Subject: [PATCH 26/53] Code Cleanup --- sopel_modules/SpiceBot_BotPrivs/BotPrivs.py | 12 ------------ .../SpiceBot_CommandsQuery/CommandsQuery.py | 6 +----- .../SpiceBot_Database_Addons/Databaseaddons.py | 4 ---- .../SpiceBot_Database_Tools/DatabaseTools.py | 12 ------------ sopel_modules/SpiceBot_Docs/Docs.py | 12 ------------ sopel_modules/SpiceBot_Events/System.py | 4 ---- sopel_modules/SpiceBot_FriendlyBot/FriendlyBot.py | 12 ------------ sopel_modules/SpiceBot_Gender/Gender.py | 12 ------------ .../SpiceBot_InsultHandler/InsultHandler.py | 12 ------------ sopel_modules/SpiceBot_LoadOrder/LoadOrder.py | 5 ----- sopel_modules/SpiceBot_Messaging/Messaging.py | 12 ------------ sopel_modules/SpiceBot_Restart/Restart.py | 12 ------------ .../SpiceBot_StartupMonologue/StartupMonologue.py | 12 ------------ sopel_modules/SpiceBot_Update/Update.py | 4 ---- sopel_modules/SpiceBot_Uptime/Uptime.py | 4 ---- sopel_modules/SpiceBot_osd/__init__.py | 5 ----- 16 files changed, 1 insertion(+), 139 deletions(-) diff --git a/sopel_modules/SpiceBot_BotPrivs/BotPrivs.py b/sopel_modules/SpiceBot_BotPrivs/BotPrivs.py index 1954150..50dce5c 100644 --- a/sopel_modules/SpiceBot_BotPrivs/BotPrivs.py +++ b/sopel_modules/SpiceBot_BotPrivs/BotPrivs.py @@ -9,18 +9,6 @@ import spicemanip from sopel_modules.SpiceBot_SBTools import sopel_triggerargs, bot_privs -def configure(config): - pass - - -def setup(bot): - pass - - -def shutdown(bot): - pass - - @sopel.module.nickname_commands('owners', 'owner') def bot_command_owners(bot, trigger): bot_command_process(bot, trigger) diff --git a/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py b/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py index 8c90401..b52098a 100644 --- a/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py +++ b/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py @@ -7,17 +7,13 @@ import sopel.module import os -from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, check_bot_events, startup_bot_event +from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, startup_bot_event from sopel_modules.SpiceBot_Events.System import bot_events_startup_register, bot_events_recieved, bot_events_trigger from sopel_modules.SpiceBot_SBTools import bot_logging import spicemanip -def configure(config): - pass - - def setup(bot): bot_logging(bot, 'SpiceBot_CommandsQuery', "Starting setup procedure") bot_events_startup_register(bot, ['2002']) diff --git a/sopel_modules/SpiceBot_Database_Addons/Databaseaddons.py b/sopel_modules/SpiceBot_Database_Addons/Databaseaddons.py index ad33a4e..7c07129 100644 --- a/sopel_modules/SpiceBot_Database_Addons/Databaseaddons.py +++ b/sopel_modules/SpiceBot_Database_Addons/Databaseaddons.py @@ -21,10 +21,6 @@ def setup(bot): SopelDB._create_table = SopelDBCache._create_table -def shutdown(bot): - pass - - class SopelDBCache: """Dynamic Table Creation""" diff --git a/sopel_modules/SpiceBot_Database_Tools/DatabaseTools.py b/sopel_modules/SpiceBot_Database_Tools/DatabaseTools.py index 53242da..816c56f 100644 --- a/sopel_modules/SpiceBot_Database_Tools/DatabaseTools.py +++ b/sopel_modules/SpiceBot_Database_Tools/DatabaseTools.py @@ -6,18 +6,6 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi import sopel.module -def configure(config): - pass - - -def setup(bot): - pass - - -def shutdown(bot): - pass - - """Dyanmic Table Creation""" diff --git a/sopel_modules/SpiceBot_Docs/Docs.py b/sopel_modules/SpiceBot_Docs/Docs.py index bdda514..e1daf4a 100644 --- a/sopel_modules/SpiceBot_Docs/Docs.py +++ b/sopel_modules/SpiceBot_Docs/Docs.py @@ -9,18 +9,6 @@ import spicemanip from sopel_modules.SpiceBot_SBTools import sopel_triggerargs, bot_privs, github_dict -def configure(config): - pass - - -def setup(bot): - pass - - -def shutdown(bot): - pass - - @sopel.module.nickname_commands('help', 'docs', 'wiki') def bot_command_owners(bot, trigger): bot.osd(["IRC Modules Repository", str(github_dict["url_main"] + github_dict["repo_owner"] + "/" + github_dict["repo_name"] + github_dict["url_path_wiki"])]) diff --git a/sopel_modules/SpiceBot_Events/System.py b/sopel_modules/SpiceBot_Events/System.py index d96005c..50db905 100644 --- a/sopel_modules/SpiceBot_Events/System.py +++ b/sopel_modules/SpiceBot_Events/System.py @@ -8,10 +8,6 @@ import sopel from sopel_modules.SpiceBot_SBTools import bot_logging -def configure(config): - pass - - def setup(bot): bot_logging(bot, 'SpiceBot_Events', "Starting setup procedure") bot_events_setup_check(bot) diff --git a/sopel_modules/SpiceBot_FriendlyBot/FriendlyBot.py b/sopel_modules/SpiceBot_FriendlyBot/FriendlyBot.py index c0c8086..5d139bd 100644 --- a/sopel_modules/SpiceBot_FriendlyBot/FriendlyBot.py +++ b/sopel_modules/SpiceBot_FriendlyBot/FriendlyBot.py @@ -7,18 +7,6 @@ import sopel.module import spicemanip -def configure(config): - pass - - -def setup(bot): - pass - - -def shutdown(bot): - pass - - @sopel.module.rule(r'(?i)(hi|hello|hey),? $nickname[ \t]*$') def bot_command_hello(bot, trigger): hello = spicemanip.main(['Hi', 'Hey', 'Hello'], "random") diff --git a/sopel_modules/SpiceBot_Gender/Gender.py b/sopel_modules/SpiceBot_Gender/Gender.py index f74655d..a2a8f5f 100644 --- a/sopel_modules/SpiceBot_Gender/Gender.py +++ b/sopel_modules/SpiceBot_Gender/Gender.py @@ -5,18 +5,6 @@ from __future__ import unicode_literals, absolute_import, division, print_functi import sopel.module -def configure(config): - pass - - -def setup(bot): - pass - - -def shutdown(bot): - pass - - @sopel.module.nickname_commands('gender') def bot_command_gender(bot, trigger): bot.osd("If societal genders are binary, my gender is female") diff --git a/sopel_modules/SpiceBot_InsultHandler/InsultHandler.py b/sopel_modules/SpiceBot_InsultHandler/InsultHandler.py index 311ed8e..19c1c69 100644 --- a/sopel_modules/SpiceBot_InsultHandler/InsultHandler.py +++ b/sopel_modules/SpiceBot_InsultHandler/InsultHandler.py @@ -5,18 +5,6 @@ from __future__ import unicode_literals, absolute_import, division, print_functi import sopel.module -def configure(config): - pass - - -def setup(bot): - pass - - -def shutdown(bot): - pass - - @sopel.module.rule(r'(?i)(Fuck|Screw) (you|off),? $nickname[ \t]*$') def bot_command_srewyou(bot, trigger): bot.osd("Watch your mouth, " + trigger.nick + ", or I'll tell your mother!") diff --git a/sopel_modules/SpiceBot_LoadOrder/LoadOrder.py b/sopel_modules/SpiceBot_LoadOrder/LoadOrder.py index 7284293..8856734 100644 --- a/sopel_modules/SpiceBot_LoadOrder/LoadOrder.py +++ b/sopel_modules/SpiceBot_LoadOrder/LoadOrder.py @@ -10,12 +10,7 @@ from sopel_modules.SpiceBot_SBTools import bot_logging import threading -def configure(config): - pass - - def setup(bot): - # TODO add custom pretrigger events bot_logging(bot, 'Sopel_LoadOrder', "Starting Module Events Logging") threading.Thread(target=setup_thread, args=(bot,)).start() diff --git a/sopel_modules/SpiceBot_Messaging/Messaging.py b/sopel_modules/SpiceBot_Messaging/Messaging.py index 8b24a0b..5425bed 100644 --- a/sopel_modules/SpiceBot_Messaging/Messaging.py +++ b/sopel_modules/SpiceBot_Messaging/Messaging.py @@ -9,18 +9,6 @@ import spicemanip from sopel_modules.SpiceBot_SBTools import sopel_triggerargs, command_permissions_check, inlist -def configure(config): - pass - - -def setup(bot): - pass - - -def shutdown(bot): - pass - - @sopel.module.nickname_commands('action') def bot_command_action(bot, trigger): bot_command_process(bot, trigger) diff --git a/sopel_modules/SpiceBot_Restart/Restart.py b/sopel_modules/SpiceBot_Restart/Restart.py index 5e078e7..b6870ee 100644 --- a/sopel_modules/SpiceBot_Restart/Restart.py +++ b/sopel_modules/SpiceBot_Restart/Restart.py @@ -8,18 +8,6 @@ import sopel.module from sopel_modules.SpiceBot_SBTools import bot_logging, spicebot_reload -def configure(config): - pass - - -def setup(bot): - pass - - -def shutdown(bot): - pass - - @sopel.module.nickname_commands('restart') def nickname_comand_restart(bot, trigger): diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py index 4501367..02143f7 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py @@ -10,18 +10,6 @@ from sopel_modules.SpiceBot_SBTools import humanized_time, bot_logging import time -def configure(config): - pass - - -def setup(bot): - pass - - -def shutdown(bot): - pass - - @module.event('001') @module.rule('.*') @module.thread(True) diff --git a/sopel_modules/SpiceBot_Update/Update.py b/sopel_modules/SpiceBot_Update/Update.py index 820cd41..fbd833a 100644 --- a/sopel_modules/SpiceBot_Update/Update.py +++ b/sopel_modules/SpiceBot_Update/Update.py @@ -29,10 +29,6 @@ def setup(bot): bot.config.define_section("SpiceBot_Update", SpiceBot_Update_MainSection, validate=False) -def shutdown(bot): - pass - - @sopel.module.nickname_commands('update') def nickname_comand_update(bot, trigger): diff --git a/sopel_modules/SpiceBot_Uptime/Uptime.py b/sopel_modules/SpiceBot_Uptime/Uptime.py index 81ba858..2dbaf32 100644 --- a/sopel_modules/SpiceBot_Uptime/Uptime.py +++ b/sopel_modules/SpiceBot_Uptime/Uptime.py @@ -11,10 +11,6 @@ from sopel_modules.SpiceBot_SBTools import humanized_time from sopel_modules.SpiceBot_SBTools import bot_logging -def configure(config): - pass - - def setup(bot): if 'SpiceBot_Uptime' not in bot.memory: now = time.time() diff --git a/sopel_modules/SpiceBot_osd/__init__.py b/sopel_modules/SpiceBot_osd/__init__.py index 8c4bbbb..105158a 100644 --- a/sopel_modules/SpiceBot_osd/__init__.py +++ b/sopel_modules/SpiceBot_osd/__init__.py @@ -54,11 +54,6 @@ def setup(bot): bot.config.define_section("MAXTARGCONFIG", MAXTARGCONFIG, validate=False) -def shutdown(bot): - pass - - -# RPL_ISUPPORT = '005' @module.event('005') @module.rule('.*') def parse_event_005(bot, trigger): From 152f059b4610ccd46e41a987b6ef806e3ee9a832 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 22:21:03 -0400 Subject: [PATCH 27/53] hopefully last test of event system --- .../SpiceBot_CommandsQuery/__init__.py | 2 +- sopel_modules/SpiceBot_Docs/Docs.py | 4 +- sopel_modules/SpiceBot_GifSearch/gif.py | 3 +- sopel_modules/SpiceBot_GifSearch/gifapi.py | 3 +- sopel_modules/SpiceBot_GifSearch/gifsearch.py | 42 ++++-------- sopel_modules/SpiceBot_Logs/Logs.py | 59 +++++++---------- sopel_modules/SpiceBot_Logs/Logs_Command.py | 38 +++++++++++ sopel_modules/SpiceBot_Logs/__init__.py | 1 + sopel_modules/SpiceBot_SBTools/__init__.py | 19 +++--- .../StartupMonologue.py | 64 ++++++++++--------- 10 files changed, 121 insertions(+), 114 deletions(-) create mode 100644 sopel_modules/SpiceBot_Logs/Logs_Command.py diff --git a/sopel_modules/SpiceBot_CommandsQuery/__init__.py b/sopel_modules/SpiceBot_CommandsQuery/__init__.py index c439020..55dadea 100644 --- a/sopel_modules/SpiceBot_CommandsQuery/__init__.py +++ b/sopel_modules/SpiceBot_CommandsQuery/__init__.py @@ -6,7 +6,7 @@ Sopel Commands Query responds to ? to display commands matching patterns from __future__ import unicode_literals, absolute_import, division, print_function from .CommandsQuery import * -from . QueryCommand import * +from .QueryCommand import * __author__ = 'Sam Zick' __email__ = 'sam@deathbybandaid.net' diff --git a/sopel_modules/SpiceBot_Docs/Docs.py b/sopel_modules/SpiceBot_Docs/Docs.py index e1daf4a..c8e496a 100644 --- a/sopel_modules/SpiceBot_Docs/Docs.py +++ b/sopel_modules/SpiceBot_Docs/Docs.py @@ -4,9 +4,7 @@ from __future__ import unicode_literals, absolute_import, division, print_functi import sopel.module -import spicemanip - -from sopel_modules.SpiceBot_SBTools import sopel_triggerargs, bot_privs, github_dict +from sopel_modules.SpiceBot_SBTools import github_dict @sopel.module.nickname_commands('help', 'docs', 'wiki') diff --git a/sopel_modules/SpiceBot_GifSearch/gif.py b/sopel_modules/SpiceBot_GifSearch/gif.py index a90f2d4..9a93975 100644 --- a/sopel_modules/SpiceBot_GifSearch/gif.py +++ b/sopel_modules/SpiceBot_GifSearch/gif.py @@ -7,6 +7,7 @@ from sopel import module from .gifsearch import getGif from sopel_modules.SpiceBot_SBTools import sopel_triggerargs +from sopel_modules.SpiceBot_Events.System import bot_events_check import spicemanip @@ -14,7 +15,7 @@ import spicemanip @module.commands('gif') def gif_trigger(bot, trigger): - while "SpiceBot_GifSearch" not in bot.memory: + while not bot_events_check(bot, '2003'): pass triggerargs, triggercommand = sopel_triggerargs(bot, trigger) diff --git a/sopel_modules/SpiceBot_GifSearch/gifapi.py b/sopel_modules/SpiceBot_GifSearch/gifapi.py index 9442793..6748cae 100644 --- a/sopel_modules/SpiceBot_GifSearch/gifapi.py +++ b/sopel_modules/SpiceBot_GifSearch/gifapi.py @@ -9,12 +9,13 @@ import sopel.module import spicemanip from sopel_modules.SpiceBot_SBTools import sopel_triggerargs +from sopel_modules.SpiceBot_Events.System import bot_events_check @sopel.module.commands('(.*)') def gifapi_triggers(bot, trigger): - while "SpiceBot_GifSearch" not in bot.memory: + while not bot_events_check(bot, '2003'): pass triggerargs, triggercommand = sopel_triggerargs(bot, trigger, 'prefix_command') diff --git a/sopel_modules/SpiceBot_GifSearch/gifsearch.py b/sopel_modules/SpiceBot_GifSearch/gifsearch.py index 52ff480..a75b087 100644 --- a/sopel_modules/SpiceBot_GifSearch/gifsearch.py +++ b/sopel_modules/SpiceBot_GifSearch/gifsearch.py @@ -6,10 +6,11 @@ import sopel.module from sopel.config.types import StaticSection, ValidatedAttribute from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, startup_bot_event +from sopel_modules.SpiceBot_Events.System import bot_events_startup_register, bot_events_recieved, bot_events_trigger from sopel_modules.SpiceBot_CommandsQuery.CommandsQuery import commandsquery_register -from sopel_modules.SpiceBot_SBTools import read_directory_json_to_dict, sopel_triggerargs, bot_logging +from sopel_modules.SpiceBot_SBTools import read_directory_json_to_dict, bot_logging import spicemanip @@ -19,7 +20,6 @@ import requests import json from fake_useragent import UserAgent import random -import threading # user agent and header ua = UserAgent() @@ -51,18 +51,8 @@ def configure(config): def setup(bot): - bot_logging(bot, 'SpiceBot_GifSearch', "Starting Setup Procedure") - - threading.Thread(target=setup_thread, args=(bot,)).start() - - -def shutdown(bot): - if "SpiceBot_GifSearch" in bot.memory: - del bot.memory["SpiceBot_GifSearch"] - - -def setup_thread(bot): + bot_events_startup_register(bot, ['2003']) startup_bot_event(bot, "SpiceBot_GifSearch") @@ -94,24 +84,12 @@ def setup_thread(bot): commandsquery_register(bot, "prefix", prefixcommand) set_bot_event(bot, "SpiceBot_GifSearch") + bot_events_trigger(bot, 2003, "SpiceBot_GifSearch") -@sopel.module.commands('gif') -def gif_trigger(bot, trigger): - triggerargs, triggercommand = sopel_triggerargs(bot, trigger) - if triggerargs == []: - return bot.osd("Please present a query to search.") - - query = spicemanip.main(trigger.args[1], 0) - searchapis = bot.memory["SpiceBot_GifSearch"]['valid_gif_api_dict'].keys() - searchdict = {"query": query, "gifsearch": searchapis} - - gifdict = getGif(bot, searchdict) - - if gifdict["error"]: - bot.osd(gifdict["error"]) - else: - bot.osd(str(gifdict['gifapi'].title() + " Result (" + str(query) + " #" + str(gifdict["returnnum"]) + "): " + str(gifdict["returnurl"]))) +def shutdown(bot): + if "SpiceBot_GifSearch" in bot.memory: + del bot.memory["SpiceBot_GifSearch"] def getGif(bot, searchdict): @@ -273,3 +251,9 @@ def getGif(bot, searchdict): # return dict gifdict['error'] = None return gifdict + + +@sopel.module.event('2003') +@sopel.module.rule('.*') +def bot_events_setup(bot, trigger): + bot_events_recieved(bot, trigger.event) diff --git a/sopel_modules/SpiceBot_Logs/Logs.py b/sopel_modules/SpiceBot_Logs/Logs.py index 85593d5..93310d2 100644 --- a/sopel_modules/SpiceBot_Logs/Logs.py +++ b/sopel_modules/SpiceBot_Logs/Logs.py @@ -3,12 +3,13 @@ from __future__ import unicode_literals, absolute_import, division, print_function import sopel.module -from sopel.tools import stderr from sopel.config.types import StaticSection, ValidatedAttribute import spicemanip from sopel_modules.SpiceBot_SBTools import sopel_triggerargs, command_permissions_check, inlist, inlist_match, bot_logging +from sopel_modules.SpiceBot_Events.System import bot_events_startup_register, bot_events_recieved, bot_events_trigger +from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, startup_bot_event def configure(config): @@ -23,21 +24,24 @@ class SpiceBot_Logs_MainSection(StaticSection): def setup(bot): bot_logging(bot, 'SpiceBot_Logs', "Starting Setup Procedure") bot.config.define_section("SpiceBot_Logs", SpiceBot_Logs_MainSection, validate=False) - if 'SpiceBot_Logs' not in bot.memory: - bot.memory['SpiceBot_Logs'] = {} - if 'SpiceBot_Logs_queue' not in bot.memory: - bot.memory['SpiceBot_Logs_queue'] = [] + bot_events_startup_register(bot, ['2004']) + + startup_bot_event(bot, "SpiceBot_CommandsQuery") + + if 'SpiceBot_Logs' not in bot.memory: + bot.memory['SpiceBot_Logs'] = {"logs": {}, "queue": []} + + set_bot_event(bot, "SpiceBot_Logs") + bot_events_trigger(bot, 2004, "SpiceBot_Logs") def shutdown(bot): if "SpiceBot_Logs" in bot.memory: del bot.memory["SpiceBot_Logs"] - if "SpiceBot_Logs_queue" in bot.memory: - del bot.memory["SpiceBot_Logs_queue"] -@sopel.module.event('001') +@sopel.module.event('1004') @sopel.module.rule('.*') def join_log_channel(bot, trigger): if bot.config.SpiceBot_Logs.logging_channel: @@ -47,35 +51,16 @@ def join_log_channel(bot, trigger): if channel not in bot.channels.keys() and bot.config.SpiceBot_Channels.operadmin: bot.write(('SAJOIN', bot.nick, channel)) - if 'SpiceBot_Logs_queue' not in bot.memory: - bot.memory['SpiceBot_Logs_queue'] = [] + if 'SpiceBot_Logs' not in bot.memory: + bot.memory['SpiceBot_Logs'] = {"logs": {}, "queue": []} - while 'SpiceBot_Logs_queue' in bot.memory: - if len(bot.memory['SpiceBot_Logs_queue']): - bot.say(str(bot.memory['SpiceBot_Logs_queue'][0]), channel) - del bot.memory['SpiceBot_Logs_queue'][0] + while 'SpiceBot_Logs' in bot.memory: + if len(bot.memory['SpiceBot_Logs']["queue"]): + bot.say(str(bot.memory['SpiceBot_Logs']["queue"][0]), channel) + del bot.memory['SpiceBot_Logs']["queue"][0] -@sopel.module.nickname_commands('logs') -def bot_command_action(bot, trigger): - - if not command_permissions_check(bot, trigger, ['admins', 'owner']): - bot.say("I was unable to process this Bot Nick command due to privilege issues.") - return - - triggerargs, triggercommand = sopel_triggerargs(bot, trigger, 'nickname_command') - - logtype = spicemanip.main(triggerargs, 1) or None - if not logtype or not inlist(bot, logtype, bot.memory['SpiceBot_Logs'].keys()): - bot.osd("Current valid log(s) include: " + spicemanip.main(bot.memory['SpiceBot_Logs'].keys(), 'andlist'), trigger.sender, 'action') - return - - logtype = inlist_match(bot, logtype, bot.memory['SpiceBot_Logs'].keys()) - - if len(bot.memory['SpiceBot_Logs'][logtype]) == 0: - bot.osd("No logs found for " + str(logtype) + ".") - return - - bot.osd("Is Examining " + str(logtype) + " log(s).") - for line in bot.memory['SpiceBot_Logs'][logtype]: - bot.osd(" " + str(line)) +@sopel.module.event('2004') +@sopel.module.rule('.*') +def bot_events_setup(bot, trigger): + bot_events_recieved(bot, trigger.event) diff --git a/sopel_modules/SpiceBot_Logs/Logs_Command.py b/sopel_modules/SpiceBot_Logs/Logs_Command.py new file mode 100644 index 0000000..c201128 --- /dev/null +++ b/sopel_modules/SpiceBot_Logs/Logs_Command.py @@ -0,0 +1,38 @@ +# coding=utf-8 + +from __future__ import unicode_literals, absolute_import, division, print_function + +import sopel.module + +import spicemanip + +from sopel_modules.SpiceBot_SBTools import sopel_triggerargs, command_permissions_check, inlist, inlist_match +from sopel_modules.SpiceBot_Events.System import bot_events_check + + +@sopel.module.nickname_commands('logs') +def bot_command_action(bot, trigger): + + while not bot_events_check(bot, '2004'): + pass + + if not command_permissions_check(bot, trigger, ['admins', 'owner']): + bot.say("I was unable to process this Bot Nick command due to privilege issues.") + return + + triggerargs, triggercommand = sopel_triggerargs(bot, trigger, 'nickname_command') + + logtype = spicemanip.main(triggerargs, 1) or None + if not logtype or not inlist(bot, logtype, bot.memory['SpiceBot_Logs']["logs"].keys()): + bot.osd("Current valid log(s) include: " + spicemanip.main(bot.memory['SpiceBot_Logs']["logs"].keys(), 'andlist'), trigger.sender, 'action') + return + + logtype = inlist_match(bot, logtype, bot.memory['SpiceBot_Logs'].keys()) + + if len(bot.memory['SpiceBot_Logs']["logs"][logtype]) == 0: + bot.osd("No logs found for " + str(logtype) + ".") + return + + bot.osd("Is Examining " + str(logtype) + " log(s).") + for line in bot.memory['SpiceBot_Logs']["logs"][logtype]: + bot.osd(" " + str(line)) diff --git a/sopel_modules/SpiceBot_Logs/__init__.py b/sopel_modules/SpiceBot_Logs/__init__.py index f9d038a..4c90034 100644 --- a/sopel_modules/SpiceBot_Logs/__init__.py +++ b/sopel_modules/SpiceBot_Logs/__init__.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals, absolute_import, division, print_function from .Logs import * +from .Logs_Command import * __author__ = 'Sam Zick' __email__ = 'sam@deathbybandaid.net' diff --git a/sopel_modules/SpiceBot_SBTools/__init__.py b/sopel_modules/SpiceBot_SBTools/__init__.py index 757018e..a4b67d0 100644 --- a/sopel_modules/SpiceBot_SBTools/__init__.py +++ b/sopel_modules/SpiceBot_SBTools/__init__.py @@ -95,24 +95,21 @@ def command_permissions_check(bot, trigger, privslist): def bot_logging(bot, logtype, logentry): - if 'SpiceBot_Logs_queue' not in bot.memory: - bot.memory['SpiceBot_Logs_queue'] = [] + if 'SpiceBot_Logs' not in bot.memory: + bot.memory['SpiceBot_Logs'] = {"logs": {}, "queue": []} logmessage = "[" + logtype + "] " + logentry + "" - bot.memory['SpiceBot_Logs_queue'].append(logmessage) + bot.memory['SpiceBot_Logs']["queue"].append(logmessage) stderr("\n" + logmessage + "\n") - if 'SpiceBot_Logs' not in bot.memory: - bot.memory['SpiceBot_Logs'] = {} + if logtype not in bot.memory['SpiceBot_Logs']["logs"].keys(): + bot.memory['SpiceBot_Logs']["logs"][logtype] = [] - if logtype not in bot.memory['SpiceBot_Logs'].keys(): - bot.memory['SpiceBot_Logs'][logtype] = [] - - bot.memory['SpiceBot_Logs'][logtype].append(logentry) - if len(bot.memory['SpiceBot_Logs'][logtype]) > 10: - del bot.memory['SpiceBot_Logs'][logtype][0] + bot.memory['SpiceBot_Logs']["logs"][logtype].append(logentry) + if len(bot.memory['SpiceBot_Logs']["logs"][logtype]) > 10: + del bot.memory['SpiceBot_Logs']["logs"][logtype][0] """ diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py index 02143f7..f0fe416 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py @@ -2,38 +2,36 @@ from __future__ import unicode_literals, absolute_import, division, print_function -from sopel import module - -from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, check_bot_events +import sopel.module +from sopel_modules.SpiceBot_Events.System import bot_events_startup_register, bot_events_recieved, bot_events_trigger +from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event from sopel_modules.SpiceBot_SBTools import humanized_time, bot_logging import time -@module.event('001') -@module.rule('.*') -@module.thread(True) -def bot_startup_monologue(bot, trigger): +def setup(bot): + bot_logging(bot, 'SpiceBot_StartupMonologue', "Starting setup procedure") + bot_events_startup_register(bot, ['2005']) - while not check_bot_events(bot, ["connected"]): - pass - - if check_bot_events(bot, ["SpiceBot_StartupMonologue"]): - startup_reconnect(bot, trigger) - else: - startup_fresh(bot, trigger) + if 'SpiceBot_StartupMonologue' not in bot.memory: + bot.memory['SpiceBot_StartupMonologue'] = [] -def startup_fresh(bot, trigger): +@sopel.module.event('1003') +@sopel.module.rule('.*') +def bot_startup_monologue_start(bot, trigger): # Startup bot_logging(bot, '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') - startupcomplete = [bot.nick + " startup complete"] + bot.memory['SpiceBot_StartupMonologue'].append(bot.nick + " startup complete") - while not check_bot_events(bot, ["SpiceBot_CommandsQuery"]): - pass + +@sopel.module.event('2002') +@sopel.module.rule('.*') +def bot_startup_monologue_commands(bot, trigger): availablecomsnum, availablecomsfiles = 0, 0 for commandstype in bot.memory['SpiceBot_CommandsQuery']['commands'].keys(): @@ -41,31 +39,35 @@ def startup_fresh(bot, trigger): for commandstype in bot.memory['SpiceBot_CommandsQuery']['counts'].keys(): availablecomsfiles += bot.memory['SpiceBot_CommandsQuery']['counts'][commandstype] - startupcomplete.append("There are " + str(availablecomsnum) + " commands available in " + str(availablecomsfiles) + " files.") + bot.memory['SpiceBot_StartupMonologue'].append("There are " + str(availablecomsnum) + " commands available in " + str(availablecomsfiles) + " files.") bot_logging(bot, 'SpiceBot_StartupMonologue', "There are " + str(availablecomsnum) + " commands available in " + str(availablecomsfiles) + " files.") - while not check_bot_events(bot, ["SpiceBot_Channels"]): - pass + +@sopel.module.event('2001') +@sopel.module.rule('.*') +def bot_startup_monologue_channels(bot, trigger): botcount = len(bot.channels.keys()) servercount = len(bot.memory['SpiceBot_Channels']['channels'].keys()) - startupcomplete.append("I am in " + str(botcount) + " of " + str(servercount) + " channel(s) available on this server.") + bot.memory['SpiceBot_StartupMonologue'].append("I am in " + str(botcount) + " of " + str(servercount) + " channel(s) available on this server.") - while not check_bot_events(bot, ["startup_complete"]): - pass + +@sopel.module.event('1004') +@sopel.module.rule('.*') +def bot_startup_monologue_display(bot, trigger): timesince = humanized_time(time.time() - bot.memory["SpiceBot_Uptime"]) - startupcomplete.append("Startup took " + timesince) + bot.memory['SpiceBot_StartupMonologue'].append("Startup took " + timesince) # Announce to chan, then handle some closing stuff bot_logging(bot, 'SpiceBot_StartupMonologue', bot.nick + " startup complete") - bot.osd(startupcomplete, bot.channels.keys()) + bot.osd(bot.memory['SpiceBot_StartupMonologue'], bot.channels.keys()) set_bot_event(bot, "SpiceBot_StartupMonologue") + bot_events_trigger(bot, 2005, "SpiceBot_StartupMonologue") -def startup_reconnect(bot, trigger): - - # Startup - bot_logging(bot, 'SpiceBot_StartupMonologue', bot.nick + " has reconnected.") - bot.osd(" has reconnected.", bot.channels.keys(), 'ACTION') +@sopel.module.event('2005') +@sopel.module.rule('.*') +def bot_events_setup(bot, trigger): + bot_events_recieved(bot, trigger.event) From b0d4f7005b98155c3a4f227572a09660002f3b73 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 22:27:56 -0400 Subject: [PATCH 28/53] silly to put that there --- sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py index f0fe416..7a2ee51 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py @@ -12,7 +12,6 @@ import time def setup(bot): bot_logging(bot, 'SpiceBot_StartupMonologue', "Starting setup procedure") - bot_events_startup_register(bot, ['2005']) if 'SpiceBot_StartupMonologue' not in bot.memory: bot.memory['SpiceBot_StartupMonologue'] = [] From 1695bef55bc49d58d7eef0e5c5cdf4d8920ff816 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 22:33:22 -0400 Subject: [PATCH 29/53] update commandsquery --- sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py b/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py index b52098a..a956ff0 100644 --- a/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py +++ b/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py @@ -170,11 +170,10 @@ def commandsquery_register(bot, command_type, validcoms, aliasfor=None): if not isinstance(validcoms, list): validcoms = [validcoms] - if command_type not in bot.memory['SpiceBot_CommandsQuery'].keys(): - if command_type not in bot.memory['SpiceBot_CommandsQuery']['counts'].keys(): - bot.memory['SpiceBot_CommandsQuery']['counts'][command_type] = 0 - if command_type not in bot.memory['SpiceBot_CommandsQuery']['commands'].keys(): - bot.memory['SpiceBot_CommandsQuery']['commands'][command_type] = dict() + if command_type not in bot.memory['SpiceBot_CommandsQuery']['counts'].keys(): + bot.memory['SpiceBot_CommandsQuery']['counts'][command_type] = 0 + if command_type not in bot.memory['SpiceBot_CommandsQuery']['commands'].keys(): + bot.memory['SpiceBot_CommandsQuery']['commands'][command_type] = dict() bot.memory['SpiceBot_CommandsQuery']['counts'][command_type] += 1 dict_from_file = dict() From 2fda1a0b81aa3f1d3b4e44bc958497a1d48667f4 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 22:35:11 -0400 Subject: [PATCH 30/53] remove import --- sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py index 7a2ee51..fa9ce94 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals, absolute_import, division, print_functi import sopel.module -from sopel_modules.SpiceBot_Events.System import bot_events_startup_register, bot_events_recieved, bot_events_trigger +from sopel_modules.SpiceBot_Events.System import bot_events_recieved, bot_events_trigger from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event from sopel_modules.SpiceBot_SBTools import humanized_time, bot_logging import time From cd1b8d88a87d62d1698ed8f972df3df03a6e8fd5 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 22:38:14 -0400 Subject: [PATCH 31/53] repair prefix commands register --- sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py b/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py index a956ff0..438f727 100644 --- a/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py +++ b/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py @@ -167,6 +167,9 @@ def bot_events_complete(bot, trigger): def commandsquery_register(bot, command_type, validcoms, aliasfor=None): + if 'SpiceBot_CommandsQuery' not in bot.memory: + bot.memory['SpiceBot_CommandsQuery'] = {"counts": {}, "commands": {}} + if not isinstance(validcoms, list): validcoms = [validcoms] From 717766217c96e71a923de87c8e5269c945ea9ee7 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 22:59:00 -0400 Subject: [PATCH 32/53] Code Cleanup --- sopel_modules/SpiceBot_Logs/Logs.py | 6 +- sopel_modules/SpiceBot_SBTools/__init__.py | 20 +++--- .../StartupMonologue.py | 55 +--------------- .../StartupMonologue_Display.py | 63 +++++++++++++++++++ .../SpiceBot_StartupMonologue/__init__.py | 1 + 5 files changed, 78 insertions(+), 67 deletions(-) create mode 100644 sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py diff --git a/sopel_modules/SpiceBot_Logs/Logs.py b/sopel_modules/SpiceBot_Logs/Logs.py index 93310d2..3ddec21 100644 --- a/sopel_modules/SpiceBot_Logs/Logs.py +++ b/sopel_modules/SpiceBot_Logs/Logs.py @@ -5,9 +5,7 @@ from __future__ import unicode_literals, absolute_import, division, print_functi import sopel.module from sopel.config.types import StaticSection, ValidatedAttribute -import spicemanip - -from sopel_modules.SpiceBot_SBTools import sopel_triggerargs, command_permissions_check, inlist, inlist_match, bot_logging +from sopel_modules.SpiceBot_SBTools import bot_logging from sopel_modules.SpiceBot_Events.System import bot_events_startup_register, bot_events_recieved, bot_events_trigger from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, startup_bot_event @@ -44,6 +42,8 @@ def shutdown(bot): @sopel.module.event('1004') @sopel.module.rule('.*') def join_log_channel(bot, trigger): + bot_events_recieved(bot, trigger.event) + if bot.config.SpiceBot_Logs.logging_channel: channel = bot.config.SpiceBot_Logs.logging_channel if channel not in bot.channels.keys(): diff --git a/sopel_modules/SpiceBot_SBTools/__init__.py b/sopel_modules/SpiceBot_SBTools/__init__.py index a4b67d0..4f50ee0 100644 --- a/sopel_modules/SpiceBot_SBTools/__init__.py +++ b/sopel_modules/SpiceBot_SBTools/__init__.py @@ -4,12 +4,6 @@ from __future__ import unicode_literals, absolute_import, print_function, division import sopel -from sopel.module import OP, ADMIN, VOICE, OWNER, HALFOP -from sopel.tools import stderr -from sopel import coretasks, config -from sopel.trigger import PreTrigger, Trigger -from sopel.bot import SopelWrapper -HOP = HALFOP import collections import re @@ -102,7 +96,7 @@ def bot_logging(bot, logtype, logentry): bot.memory['SpiceBot_Logs']["queue"].append(logmessage) - stderr("\n" + logmessage + "\n") + sopel.tools.stderr("\n" + logmessage + "\n") if logtype not in bot.memory['SpiceBot_Logs']["logs"].keys(): bot.memory['SpiceBot_Logs']["logs"][logtype] = [] @@ -208,9 +202,13 @@ def channel_privs(bot, channel, privtype): privnum = bot.channels[channel].privileges[user] or 0 except KeyError: privnum = 0 - if (privnum == eval(privtype) or - (privnum >= eval(privtype) and privtype == 'OWNER') or - (privnum >= eval(privtype) and privnum < eval("OWNER") and privtype == 'ADMIN')): + if privtype == 'HOP': + privtypeeval = sopel.module.HALFOP + else: + privtypeeval = eval("sopel.module." + privtype) + if (privnum == privtypeeval or + (privnum >= privtypeeval and privtype == 'OWNER') or + (privnum >= privtypeeval and privnum < sopel.module.OWNER and privtype == 'ADMIN')): privlist.append(user) return privlist @@ -229,7 +227,7 @@ def chanadmin_all_channels(bot): for channel in bot.channels.keys(): if channel not in bot.config.SpiceBot_Channels.chanignore: if bot.config.SpiceBot_Channels.operadmin: - if not bot.channels[channel].privileges[bot.nick] < ADMIN: + if not bot.channels[channel].privileges[bot.nick] < sopel.module.ADMIN: bot.write(('SAMODE', channel, "+a", bot.nick)) else: bot.part(channel) diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py index fa9ce94..ff28ad4 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py @@ -4,10 +4,8 @@ from __future__ import unicode_literals, absolute_import, division, print_functi import sopel.module -from sopel_modules.SpiceBot_Events.System import bot_events_recieved, bot_events_trigger -from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event -from sopel_modules.SpiceBot_SBTools import humanized_time, bot_logging -import time +from sopel_modules.SpiceBot_Events.System import bot_events_recieved +from sopel_modules.SpiceBot_SBTools import bot_logging def setup(bot): @@ -17,55 +15,6 @@ def setup(bot): bot.memory['SpiceBot_StartupMonologue'] = [] -@sopel.module.event('1003') -@sopel.module.rule('.*') -def bot_startup_monologue_start(bot, trigger): - - # Startup - bot_logging(bot, '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') - - bot.memory['SpiceBot_StartupMonologue'].append(bot.nick + " startup complete") - - -@sopel.module.event('2002') -@sopel.module.rule('.*') -def bot_startup_monologue_commands(bot, trigger): - - availablecomsnum, availablecomsfiles = 0, 0 - for commandstype in bot.memory['SpiceBot_CommandsQuery']['commands'].keys(): - availablecomsnum += len(bot.memory['SpiceBot_CommandsQuery']['commands'][commandstype].keys()) - for commandstype in bot.memory['SpiceBot_CommandsQuery']['counts'].keys(): - availablecomsfiles += bot.memory['SpiceBot_CommandsQuery']['counts'][commandstype] - - bot.memory['SpiceBot_StartupMonologue'].append("There are " + str(availablecomsnum) + " commands available in " + str(availablecomsfiles) + " files.") - bot_logging(bot, 'SpiceBot_StartupMonologue', "There are " + str(availablecomsnum) + " commands available in " + str(availablecomsfiles) + " files.") - - -@sopel.module.event('2001') -@sopel.module.rule('.*') -def bot_startup_monologue_channels(bot, trigger): - - botcount = len(bot.channels.keys()) - servercount = len(bot.memory['SpiceBot_Channels']['channels'].keys()) - bot.memory['SpiceBot_StartupMonologue'].append("I am in " + str(botcount) + " of " + str(servercount) + " channel(s) available on this server.") - - -@sopel.module.event('1004') -@sopel.module.rule('.*') -def bot_startup_monologue_display(bot, trigger): - - timesince = humanized_time(time.time() - bot.memory["SpiceBot_Uptime"]) - bot.memory['SpiceBot_StartupMonologue'].append("Startup took " + timesince) - - # Announce to chan, then handle some closing stuff - bot_logging(bot, 'SpiceBot_StartupMonologue', bot.nick + " startup complete") - bot.osd(bot.memory['SpiceBot_StartupMonologue'], bot.channels.keys()) - - set_bot_event(bot, "SpiceBot_StartupMonologue") - bot_events_trigger(bot, 2005, "SpiceBot_StartupMonologue") - - @sopel.module.event('2005') @sopel.module.rule('.*') def bot_events_setup(bot, trigger): diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py new file mode 100644 index 0000000..dd7d8d9 --- /dev/null +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py @@ -0,0 +1,63 @@ +# coding=utf-8 + +from __future__ import unicode_literals, absolute_import, division, print_function + +import sopel.module + +from sopel_modules.SpiceBot_Events.System import bot_events_recieved, bot_events_trigger +from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event +from sopel_modules.SpiceBot_SBTools import humanized_time, bot_logging +import time + + +@sopel.module.event('1003') +@sopel.module.rule('.*') +def bot_startup_monologue_start(bot, trigger): + bot_events_recieved(bot, trigger.event) + + # Startup + bot_logging(bot, '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') + + bot.memory['SpiceBot_StartupMonologue'].append(bot.nick + " startup complete") + + +@sopel.module.event('2002') +@sopel.module.rule('.*') +def bot_startup_monologue_commands(bot, trigger): + bot_events_recieved(bot, trigger.event) + + availablecomsnum, availablecomsfiles = 0, 0 + for commandstype in bot.memory['SpiceBot_CommandsQuery']['commands'].keys(): + availablecomsnum += len(bot.memory['SpiceBot_CommandsQuery']['commands'][commandstype].keys()) + for commandstype in bot.memory['SpiceBot_CommandsQuery']['counts'].keys(): + availablecomsfiles += bot.memory['SpiceBot_CommandsQuery']['counts'][commandstype] + + bot.memory['SpiceBot_StartupMonologue'].append("There are " + str(availablecomsnum) + " commands available in " + str(availablecomsfiles) + " files.") + bot_logging(bot, 'SpiceBot_StartupMonologue', "There are " + str(availablecomsnum) + " commands available in " + str(availablecomsfiles) + " files.") + + +@sopel.module.event('2001') +@sopel.module.rule('.*') +def bot_startup_monologue_channels(bot, trigger): + bot_events_recieved(bot, trigger.event) + + botcount = len(bot.channels.keys()) + servercount = len(bot.memory['SpiceBot_Channels']['channels'].keys()) + bot.memory['SpiceBot_StartupMonologue'].append("I am in " + str(botcount) + " of " + str(servercount) + " channel(s) available on this server.") + + +@sopel.module.event('1004') +@sopel.module.rule('.*') +def bot_startup_monologue_display(bot, trigger): + bot_events_recieved(bot, trigger.event) + + timesince = humanized_time(time.time() - bot.memory["SpiceBot_Uptime"]) + bot.memory['SpiceBot_StartupMonologue'].append("Startup took " + timesince) + + # Announce to chan, then handle some closing stuff + bot_logging(bot, 'SpiceBot_StartupMonologue', bot.nick + " startup complete") + bot.osd(bot.memory['SpiceBot_StartupMonologue'], bot.channels.keys()) + + set_bot_event(bot, "SpiceBot_StartupMonologue") + bot_events_trigger(bot, 2005, "SpiceBot_StartupMonologue") diff --git a/sopel_modules/SpiceBot_StartupMonologue/__init__.py b/sopel_modules/SpiceBot_StartupMonologue/__init__.py index 958ebb0..abf0a53 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/__init__.py +++ b/sopel_modules/SpiceBot_StartupMonologue/__init__.py @@ -6,6 +6,7 @@ Sopel Startup Monologue displays to all channels that the bot is online from __future__ import unicode_literals, absolute_import, division, print_function from .StartupMonologue import * +from .StartupMonologue_Display import * __author__ = 'Sam Zick' __email__ = 'sam@deathbybandaid.net' From 15702921c141896207db52cd04413ec42709ceed Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 23:09:05 -0400 Subject: [PATCH 33/53] More Testing --- sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py | 3 ++- .../SpiceBot_StartupMonologue/StartupMonologue_Display.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py index ff28ad4..c5b8242 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py @@ -4,12 +4,13 @@ from __future__ import unicode_literals, absolute_import, division, print_functi import sopel.module -from sopel_modules.SpiceBot_Events.System import bot_events_recieved +from sopel_modules.SpiceBot_Events.System import bot_events_recieved, bot_events_startup_register from sopel_modules.SpiceBot_SBTools import bot_logging def setup(bot): bot_logging(bot, 'SpiceBot_StartupMonologue', "Starting setup procedure") + bot_events_startup_register(bot, ['2010', '2011']) if 'SpiceBot_StartupMonologue' not in bot.memory: bot.memory['SpiceBot_StartupMonologue'] = [] diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py index dd7d8d9..4e7a941 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py @@ -22,7 +22,7 @@ def bot_startup_monologue_start(bot, trigger): bot.memory['SpiceBot_StartupMonologue'].append(bot.nick + " startup complete") -@sopel.module.event('2002') +@sopel.module.event('2010') @sopel.module.rule('.*') def bot_startup_monologue_commands(bot, trigger): bot_events_recieved(bot, trigger.event) @@ -37,7 +37,7 @@ def bot_startup_monologue_commands(bot, trigger): bot_logging(bot, 'SpiceBot_StartupMonologue', "There are " + str(availablecomsnum) + " commands available in " + str(availablecomsfiles) + " files.") -@sopel.module.event('2001') +@sopel.module.event('2011') @sopel.module.rule('.*') def bot_startup_monologue_channels(bot, trigger): bot_events_recieved(bot, trigger.event) From bff8876f82739c31476c5b0515fc27d00c962df5 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Sun, 5 May 2019 23:12:57 -0400 Subject: [PATCH 34/53] Better Monologue organization --- .../SpiceBot_StartupMonologue/StartupMonologue_Display.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py index 4e7a941..d4177f9 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py @@ -22,7 +22,7 @@ def bot_startup_monologue_start(bot, trigger): bot.memory['SpiceBot_StartupMonologue'].append(bot.nick + " startup complete") -@sopel.module.event('2010') +@sopel.module.event('2002') @sopel.module.rule('.*') def bot_startup_monologue_commands(bot, trigger): bot_events_recieved(bot, trigger.event) @@ -36,8 +36,10 @@ def bot_startup_monologue_commands(bot, trigger): bot.memory['SpiceBot_StartupMonologue'].append("There are " + str(availablecomsnum) + " commands available in " + str(availablecomsfiles) + " files.") bot_logging(bot, 'SpiceBot_StartupMonologue', "There are " + str(availablecomsnum) + " commands available in " + str(availablecomsfiles) + " files.") + bot_events_trigger(bot, 2011, "SpiceBot_StartupMonologue") -@sopel.module.event('2011') + +@sopel.module.event('2001') @sopel.module.rule('.*') def bot_startup_monologue_channels(bot, trigger): bot_events_recieved(bot, trigger.event) @@ -46,6 +48,8 @@ def bot_startup_monologue_channels(bot, trigger): servercount = len(bot.memory['SpiceBot_Channels']['channels'].keys()) bot.memory['SpiceBot_StartupMonologue'].append("I am in " + str(botcount) + " of " + str(servercount) + " channel(s) available on this server.") + bot_events_trigger(bot, 2010, "SpiceBot_StartupMonologue") + @sopel.module.event('1004') @sopel.module.rule('.*') From 26bec78efa2c7063c441837be590688317988bf6 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 07:50:49 -0400 Subject: [PATCH 35/53] stderr output --- sopel_modules/SpiceBot_Events/System.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sopel_modules/SpiceBot_Events/System.py b/sopel_modules/SpiceBot_Events/System.py index 50db905..8d0491f 100644 --- a/sopel_modules/SpiceBot_Events/System.py +++ b/sopel_modules/SpiceBot_Events/System.py @@ -75,6 +75,7 @@ def bot_events_startup_check(bot): for startupitem in bot.memory["SpiceBot_Events"]["startup"]: if str(startupitem) not in bot.memory["SpiceBot_Events"]["loaded"]: + bot_logging(bot, 'SpiceBot_Events', str(startupitem)) return False return True From eca28b96266ef3dcb29fecf779706f51bbd6fa06 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 08:07:41 -0400 Subject: [PATCH 36/53] Cannot trigger falsely when not connected --- sopel_modules/SpiceBot_Events/System.py | 1 - sopel_modules/SpiceBot_GifSearch/gifsearch.py | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Events/System.py b/sopel_modules/SpiceBot_Events/System.py index 8d0491f..50db905 100644 --- a/sopel_modules/SpiceBot_Events/System.py +++ b/sopel_modules/SpiceBot_Events/System.py @@ -75,7 +75,6 @@ def bot_events_startup_check(bot): for startupitem in bot.memory["SpiceBot_Events"]["startup"]: if str(startupitem) not in bot.memory["SpiceBot_Events"]["loaded"]: - bot_logging(bot, 'SpiceBot_Events', str(startupitem)) return False return True diff --git a/sopel_modules/SpiceBot_GifSearch/gifsearch.py b/sopel_modules/SpiceBot_GifSearch/gifsearch.py index a75b087..54f6784 100644 --- a/sopel_modules/SpiceBot_GifSearch/gifsearch.py +++ b/sopel_modules/SpiceBot_GifSearch/gifsearch.py @@ -59,6 +59,12 @@ def setup(bot): if 'SpiceBot_GifSearch' not in bot.memory: bot.memory["SpiceBot_GifSearch"] = {"cache": {}, "badgiflinks": [], 'valid_gif_api_dict': {}} + +@sopel.module.event('1003') +@sopel.module.rule('.*') +def bot_startup_gifsearch_complete(bot, trigger): + bot_events_recieved(bot, trigger.event) + dir_to_scan = [] moduledir = os.path.dirname(os.path.abspath(__file__)) From 68165e5c2f5c53ad9085b476e3915c3ffefac5a0 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 08:15:13 -0400 Subject: [PATCH 37/53] Back to testing --- sopel_modules/SpiceBot_Events/System.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sopel_modules/SpiceBot_Events/System.py b/sopel_modules/SpiceBot_Events/System.py index 50db905..8d0491f 100644 --- a/sopel_modules/SpiceBot_Events/System.py +++ b/sopel_modules/SpiceBot_Events/System.py @@ -75,6 +75,7 @@ def bot_events_startup_check(bot): for startupitem in bot.memory["SpiceBot_Events"]["startup"]: if str(startupitem) not in bot.memory["SpiceBot_Events"]["loaded"]: + bot_logging(bot, 'SpiceBot_Events', str(startupitem)) return False return True From 49ca4eba63ef05fa04e1a3335694479b5862b323 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 08:23:12 -0400 Subject: [PATCH 38/53] better Log --- sopel_modules/SpiceBot_Events/System.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/sopel_modules/SpiceBot_Events/System.py b/sopel_modules/SpiceBot_Events/System.py index 8d0491f..5b6aebc 100644 --- a/sopel_modules/SpiceBot_Events/System.py +++ b/sopel_modules/SpiceBot_Events/System.py @@ -73,9 +73,14 @@ def bot_events_startup_check(bot): bot_events_setup_check(bot) + notcomplete = [] + for startupitem in bot.memory["SpiceBot_Events"]["startup"]: if str(startupitem) not in bot.memory["SpiceBot_Events"]["loaded"]: - bot_logging(bot, 'SpiceBot_Events', str(startupitem)) - return False + notcomplete.append(str(startupitem)) - return True + if len(notcomplete): + bot_logging(bot, 'SpiceBot_Events', str(notcomplete)) + return False + else: + return True From 2d8c1e5ff028300e48c1221d0c30192b28eb7e7b Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 08:25:10 -0400 Subject: [PATCH 39/53] remove newlines --- sopel_modules/SpiceBot_SBTools/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_SBTools/__init__.py b/sopel_modules/SpiceBot_SBTools/__init__.py index 4f50ee0..0e27942 100644 --- a/sopel_modules/SpiceBot_SBTools/__init__.py +++ b/sopel_modules/SpiceBot_SBTools/__init__.py @@ -96,7 +96,7 @@ def bot_logging(bot, logtype, logentry): bot.memory['SpiceBot_Logs']["queue"].append(logmessage) - sopel.tools.stderr("\n" + logmessage + "\n") + sopel.tools.stderr(logmessage) if logtype not in bot.memory['SpiceBot_Logs']["logs"].keys(): bot.memory['SpiceBot_Logs']["logs"][logtype] = [] From 1b019eab42c3d6e056d3099ce9a2dddc6e34ef23 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 09:43:10 -0400 Subject: [PATCH 40/53] Trigger Queue --- .../SpiceBot_CommandsQuery/CommandsQuery.py | 16 +++++----------- sopel_modules/SpiceBot_Events/Events.py | 9 ++++++++- sopel_modules/SpiceBot_Events/System.py | 4 ++-- sopel_modules/SpiceBot_GifSearch/gifsearch.py | 7 +------ sopel_modules/SpiceBot_Logs/Logs.py | 15 ++++++++++++--- 5 files changed, 28 insertions(+), 23 deletions(-) diff --git a/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py b/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py index 438f727..8cc9f1d 100644 --- a/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py +++ b/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py @@ -23,17 +23,6 @@ def setup(bot): if 'SpiceBot_CommandsQuery' not in bot.memory: bot.memory['SpiceBot_CommandsQuery'] = {"counts": {}, "commands": {}} - -def shutdown(bot): - if "SpiceBot_CommandsQuery" in bot.memory: - del bot.memory["SpiceBot_CommandsQuery"] - - -@sopel.module.event('1003') -@sopel.module.rule('.*') -def trigger_command_list_initial(bot, trigger): - bot_events_recieved(bot, trigger.event) - for comtype in ['module', 'nickname', 'rule']: if comtype not in bot.memory['SpiceBot_CommandsQuery']['counts'].keys(): bot.memory['SpiceBot_CommandsQuery']['counts'][comtype] = 0 @@ -155,6 +144,11 @@ def trigger_command_list_initial(bot, trigger): bot_events_trigger(bot, 2002, "SpiceBot_CommandsQuery") +def shutdown(bot): + if "SpiceBot_CommandsQuery" in bot.memory: + del bot.memory["SpiceBot_CommandsQuery"] + + @sopel.module.event('1004') @sopel.module.rule('.*') def bot_events_complete(bot, trigger): diff --git a/sopel_modules/SpiceBot_Events/Events.py b/sopel_modules/SpiceBot_Events/Events.py index 66d1451..ec69bbe 100644 --- a/sopel_modules/SpiceBot_Events/Events.py +++ b/sopel_modules/SpiceBot_Events/Events.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals, absolute_import, division, print_functi import sopel.module -from .System import bot_events_trigger, bot_events_recieved, bot_events_startup_check, bot_events_check +from .System import bot_events_trigger, bot_events_recieved, bot_events_startup_check, bot_events_check, bot_events_setup_check from sopel_modules.SpiceBot_SBTools import bot_logging import time @@ -50,6 +50,13 @@ def bot_events_connected(bot, trigger): bot_logging(bot, 'SpiceBot_Events', trigger.args[1]) bot_events_recieved(bot, trigger.event) + bot_events_setup_check(bot) + + while 'SpiceBot_Events' in bot.memory: + if len(bot.memory['SpiceBot_Events']["queue"]): + bot.dispatch(bot.memory['SpiceBot_Events']["queue"][0]) + del bot.memory['SpiceBot_Events']["queue"][0] + @sopel.module.event('1004') @sopel.module.rule('.*') diff --git a/sopel_modules/SpiceBot_Events/System.py b/sopel_modules/SpiceBot_Events/System.py index 5b6aebc..a7e0a15 100644 --- a/sopel_modules/SpiceBot_Events/System.py +++ b/sopel_modules/SpiceBot_Events/System.py @@ -29,12 +29,12 @@ def bot_events_trigger(bot, number, message): bot.nick, ":SpiceBot_Events " + str(number) + " " + str(bot.nick) + " :" + message ) - bot.dispatch(pretrigger) + bot.memory['SpiceBot_Events']["queue"].append(pretrigger) def bot_events_setup_check(bot): if "SpiceBot_Events" not in bot.memory: - bot.memory["SpiceBot_Events"] = {"triggers": {}, "startup": [], "loaded": []} + bot.memory["SpiceBot_Events"] = {"triggers": {}, "startup": [], "loaded": [], "queue": []} def bot_events_check(bot, listreq): diff --git a/sopel_modules/SpiceBot_GifSearch/gifsearch.py b/sopel_modules/SpiceBot_GifSearch/gifsearch.py index 54f6784..ff217e7 100644 --- a/sopel_modules/SpiceBot_GifSearch/gifsearch.py +++ b/sopel_modules/SpiceBot_GifSearch/gifsearch.py @@ -59,12 +59,6 @@ def setup(bot): if 'SpiceBot_GifSearch' not in bot.memory: bot.memory["SpiceBot_GifSearch"] = {"cache": {}, "badgiflinks": [], 'valid_gif_api_dict': {}} - -@sopel.module.event('1003') -@sopel.module.rule('.*') -def bot_startup_gifsearch_complete(bot, trigger): - bot_events_recieved(bot, trigger.event) - dir_to_scan = [] moduledir = os.path.dirname(os.path.abspath(__file__)) @@ -239,6 +233,7 @@ def getGif(bot, searchdict): try: gifpage = requests.get(gifdict["returnurl"], headers=None) except Exception as e: + gifpage = str(e) gifpage = None if gifpage and not str(gifpage.status_code).startswith(tuple(["4", "5"])): diff --git a/sopel_modules/SpiceBot_Logs/Logs.py b/sopel_modules/SpiceBot_Logs/Logs.py index 3ddec21..c13fbb6 100644 --- a/sopel_modules/SpiceBot_Logs/Logs.py +++ b/sopel_modules/SpiceBot_Logs/Logs.py @@ -27,9 +27,19 @@ def setup(bot): startup_bot_event(bot, "SpiceBot_CommandsQuery") + bot_logs_setup_check(bot) + + +def bot_logs_setup_check(bot): if 'SpiceBot_Logs' not in bot.memory: bot.memory['SpiceBot_Logs'] = {"logs": {}, "queue": []} + +@sopel.module.event('1003') +@sopel.module.rule('.*') +def bot_startup_logs_complete(bot, trigger): + bot_events_recieved(bot, trigger.event) + set_bot_event(bot, "SpiceBot_Logs") bot_events_trigger(bot, 2004, "SpiceBot_Logs") @@ -39,7 +49,7 @@ def shutdown(bot): del bot.memory["SpiceBot_Logs"] -@sopel.module.event('1004') +@sopel.module.event('1003') @sopel.module.rule('.*') def join_log_channel(bot, trigger): bot_events_recieved(bot, trigger.event) @@ -51,8 +61,7 @@ def join_log_channel(bot, trigger): if channel not in bot.channels.keys() and bot.config.SpiceBot_Channels.operadmin: bot.write(('SAJOIN', bot.nick, channel)) - if 'SpiceBot_Logs' not in bot.memory: - bot.memory['SpiceBot_Logs'] = {"logs": {}, "queue": []} + bot_logs_setup_check(bot) while 'SpiceBot_Logs' in bot.memory: if len(bot.memory['SpiceBot_Logs']["queue"]): From 7945bb03ca73ddc8fe1e3b9de73098065c5bf8c3 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 09:53:14 -0400 Subject: [PATCH 41/53] Attempt bypass for default functions --- sopel_modules/SpiceBot_Events/System.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Events/System.py b/sopel_modules/SpiceBot_Events/System.py index a7e0a15..5decaad 100644 --- a/sopel_modules/SpiceBot_Events/System.py +++ b/sopel_modules/SpiceBot_Events/System.py @@ -29,7 +29,10 @@ def bot_events_trigger(bot, number, message): bot.nick, ":SpiceBot_Events " + str(number) + " " + str(bot.nick) + " :" + message ) - bot.memory['SpiceBot_Events']["queue"].append(pretrigger) + if number in ['1001', '1002', '1003']: + bot.dispatch(pretrigger) + else: + bot.memory['SpiceBot_Events']["queue"].append(pretrigger) def bot_events_setup_check(bot): From 73c6e18d81b0738d296ea266b2877d44dcc9224b Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 10:42:08 -0400 Subject: [PATCH 42/53] Pretriggerdict --- sopel_modules/SpiceBot_Events/Events.py | 8 +++++++- sopel_modules/SpiceBot_Events/System.py | 11 ++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/sopel_modules/SpiceBot_Events/Events.py b/sopel_modules/SpiceBot_Events/Events.py index ec69bbe..2dd1eed 100644 --- a/sopel_modules/SpiceBot_Events/Events.py +++ b/sopel_modules/SpiceBot_Events/Events.py @@ -54,7 +54,13 @@ def bot_events_connected(bot, trigger): while 'SpiceBot_Events' in bot.memory: if len(bot.memory['SpiceBot_Events']["queue"]): - bot.dispatch(bot.memory['SpiceBot_Events']["queue"][0]) + number = bot.memory['SpiceBot_Events']["queue"][0]["number"] + message = bot.memory['SpiceBot_Events']["queue"][0]["message"] + pretrigger = sopel.trigger.PreTrigger( + bot.nick, + ":SpiceBot_Events " + str(number) + " " + str(bot.nick) + " :" + message + ) + bot.dispatch(pretrigger) del bot.memory['SpiceBot_Events']["queue"][0] diff --git a/sopel_modules/SpiceBot_Events/System.py b/sopel_modules/SpiceBot_Events/System.py index 5decaad..cd97620 100644 --- a/sopel_modules/SpiceBot_Events/System.py +++ b/sopel_modules/SpiceBot_Events/System.py @@ -24,15 +24,8 @@ def bot_events_trigger(bot, number, message): bot_events_setup_check(bot) bot.memory["SpiceBot_Events"]["triggers"][str(number)] = message - - pretrigger = sopel.trigger.PreTrigger( - bot.nick, - ":SpiceBot_Events " + str(number) + " " + str(bot.nick) + " :" + message - ) - if number in ['1001', '1002', '1003']: - bot.dispatch(pretrigger) - else: - bot.memory['SpiceBot_Events']["queue"].append(pretrigger) + pretriggerdict = {"number": number, "message": message} + bot.memory['SpiceBot_Events']["queue"].append(pretriggerdict) def bot_events_setup_check(bot): From 4a8cbe94dd694bd78f74220ef6dd30299632d2d8 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 10:43:55 -0400 Subject: [PATCH 43/53] better import --- sopel_modules/SpiceBot_Events/Events.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Events/Events.py b/sopel_modules/SpiceBot_Events/Events.py index 2dd1eed..524e0d0 100644 --- a/sopel_modules/SpiceBot_Events/Events.py +++ b/sopel_modules/SpiceBot_Events/Events.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals, absolute_import, division, print_function import sopel.module +from sopel.trigger import PreTrigger from .System import bot_events_trigger, bot_events_recieved, bot_events_startup_check, bot_events_check, bot_events_setup_check from sopel_modules.SpiceBot_SBTools import bot_logging @@ -56,7 +57,7 @@ def bot_events_connected(bot, trigger): if len(bot.memory['SpiceBot_Events']["queue"]): number = bot.memory['SpiceBot_Events']["queue"][0]["number"] message = bot.memory['SpiceBot_Events']["queue"][0]["message"] - pretrigger = sopel.trigger.PreTrigger( + pretrigger = PreTrigger( bot.nick, ":SpiceBot_Events " + str(number) + " " + str(bot.nick) + " :" + message ) From 27ebde07f453f98da111bc2f0bc6bcff67549467 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 11:01:31 -0400 Subject: [PATCH 44/53] Pretrigger defaults --- sopel_modules/SpiceBot_Events/Events.py | 5 +---- sopel_modules/SpiceBot_Events/System.py | 12 ++++++++++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/sopel_modules/SpiceBot_Events/Events.py b/sopel_modules/SpiceBot_Events/Events.py index 524e0d0..82b3af4 100644 --- a/sopel_modules/SpiceBot_Events/Events.py +++ b/sopel_modules/SpiceBot_Events/Events.py @@ -5,7 +5,7 @@ from __future__ import unicode_literals, absolute_import, division, print_functi import sopel.module from sopel.trigger import PreTrigger -from .System import bot_events_trigger, bot_events_recieved, bot_events_startup_check, bot_events_check, bot_events_setup_check +from .System import bot_events_trigger, bot_events_recieved, bot_events_startup_check, bot_events_setup_check from sopel_modules.SpiceBot_SBTools import bot_logging import time @@ -16,9 +16,6 @@ import time def bot_startup_connection(bot, trigger): bot_events_trigger(bot, 1001, "Welcome to the SpiceBot Events System") - if bot_events_check(bot, '1004'): - return - while not len(bot.channels.keys()) > 0: pass time.sleep(1) diff --git a/sopel_modules/SpiceBot_Events/System.py b/sopel_modules/SpiceBot_Events/System.py index cd97620..07a6e7c 100644 --- a/sopel_modules/SpiceBot_Events/System.py +++ b/sopel_modules/SpiceBot_Events/System.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi # sopel imports import sopel +from sopel.trigger import PreTrigger from sopel_modules.SpiceBot_SBTools import bot_logging @@ -24,8 +25,15 @@ def bot_events_trigger(bot, number, message): bot_events_setup_check(bot) bot.memory["SpiceBot_Events"]["triggers"][str(number)] = message - pretriggerdict = {"number": number, "message": message} - bot.memory['SpiceBot_Events']["queue"].append(pretriggerdict) + if str(number) in ['1001', '1002', '1003']: + pretrigger = PreTrigger( + bot.nick, + ":SpiceBot_Events " + str(number) + " " + str(bot.nick) + " :" + message + ) + bot.dispatch(pretrigger) + else: + pretriggerdict = {"number": number, "message": message} + bot.memory['SpiceBot_Events']["queue"].append(pretriggerdict) def bot_events_setup_check(bot): From 5029302ad1d7910121637fe82f433a581a425427 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 11:18:21 -0400 Subject: [PATCH 45/53] debug --- .../SpiceBot_StartupMonologue/StartupMonologue_Display.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py index d4177f9..131aa23 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals, absolute_import, division, print_function import sopel.module +from sopel.tools import stderr from sopel_modules.SpiceBot_Events.System import bot_events_recieved, bot_events_trigger from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event @@ -26,6 +27,7 @@ def bot_startup_monologue_start(bot, trigger): @sopel.module.rule('.*') def bot_startup_monologue_commands(bot, trigger): bot_events_recieved(bot, trigger.event) + stderr('2002') availablecomsnum, availablecomsfiles = 0, 0 for commandstype in bot.memory['SpiceBot_CommandsQuery']['commands'].keys(): @@ -43,6 +45,7 @@ def bot_startup_monologue_commands(bot, trigger): @sopel.module.rule('.*') def bot_startup_monologue_channels(bot, trigger): bot_events_recieved(bot, trigger.event) + stderr('2001') botcount = len(bot.channels.keys()) servercount = len(bot.memory['SpiceBot_Channels']['channels'].keys()) From dcbe03bdfa4d7abf8a93a2620e430c4d49aa5dc6 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 11:25:52 -0400 Subject: [PATCH 46/53] remove debug --- sopel_modules/SpiceBot_Events/System.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Events/System.py b/sopel_modules/SpiceBot_Events/System.py index 07a6e7c..b4e0dce 100644 --- a/sopel_modules/SpiceBot_Events/System.py +++ b/sopel_modules/SpiceBot_Events/System.py @@ -84,7 +84,7 @@ def bot_events_startup_check(bot): notcomplete.append(str(startupitem)) if len(notcomplete): - bot_logging(bot, 'SpiceBot_Events', str(notcomplete)) + # bot_logging(bot, 'SpiceBot_Events', str(notcomplete)) return False else: return True From 36dce57a6b95c61fd4bdbf7b9c0f5710c57cac88 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 13:20:26 -0400 Subject: [PATCH 47/53] Undo changes --- sopel_modules/SpiceBot_SBTools/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sopel_modules/SpiceBot_SBTools/__init__.py b/sopel_modules/SpiceBot_SBTools/__init__.py index 0e27942..1ce5624 100644 --- a/sopel_modules/SpiceBot_SBTools/__init__.py +++ b/sopel_modules/SpiceBot_SBTools/__init__.py @@ -140,6 +140,7 @@ def humanized_time(countdownseconds): if not displaymsg: return "just now" return displaymsg + eval(year + day + hour + minute + second) """List Manipulation Functions""" From 32e216e7a3a13341a49d155fbc025af3024937dd Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 13:24:33 -0400 Subject: [PATCH 48/53] Try --- sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py | 2 +- .../SpiceBot_StartupMonologue/StartupMonologue_Display.py | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py index c5b8242..b5ae215 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue.py @@ -16,7 +16,7 @@ def setup(bot): bot.memory['SpiceBot_StartupMonologue'] = [] -@sopel.module.event('2005') +@sopel.module.event('2005', '2010', '2011') @sopel.module.rule('.*') def bot_events_setup(bot, trigger): bot_events_recieved(bot, trigger.event) diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py index 131aa23..d4177f9 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py @@ -3,7 +3,6 @@ from __future__ import unicode_literals, absolute_import, division, print_function import sopel.module -from sopel.tools import stderr from sopel_modules.SpiceBot_Events.System import bot_events_recieved, bot_events_trigger from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event @@ -27,7 +26,6 @@ def bot_startup_monologue_start(bot, trigger): @sopel.module.rule('.*') def bot_startup_monologue_commands(bot, trigger): bot_events_recieved(bot, trigger.event) - stderr('2002') availablecomsnum, availablecomsfiles = 0, 0 for commandstype in bot.memory['SpiceBot_CommandsQuery']['commands'].keys(): @@ -45,7 +43,6 @@ def bot_startup_monologue_commands(bot, trigger): @sopel.module.rule('.*') def bot_startup_monologue_channels(bot, trigger): bot_events_recieved(bot, trigger.event) - stderr('2001') botcount = len(bot.channels.keys()) servercount = len(bot.memory['SpiceBot_Channels']['channels'].keys()) From 999bfca80c5234bcca39c90bd7242acb0b5d4d51 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 14:20:30 -0400 Subject: [PATCH 49/53] Remove Loadorder system and update logic for commandsquery --- sopel_modules/SpiceBot_Channels/Channels.py | 4 -- .../SpiceBot_CommandsQuery/CommandsQuery.py | 39 +++++------ sopel_modules/SpiceBot_GifSearch/gifsearch.py | 4 -- sopel_modules/SpiceBot_LoadOrder/Connected.py | 25 ------- sopel_modules/SpiceBot_LoadOrder/LoadOrder.py | 70 ------------------- .../SpiceBot_LoadOrder/Startup_Complete.py | 19 ----- sopel_modules/SpiceBot_LoadOrder/__init__.py | 15 ---- sopel_modules/SpiceBot_Logs/Logs.py | 14 +--- .../StartupMonologue_Display.py | 2 - 9 files changed, 20 insertions(+), 172 deletions(-) delete mode 100644 sopel_modules/SpiceBot_LoadOrder/Connected.py delete mode 100644 sopel_modules/SpiceBot_LoadOrder/LoadOrder.py delete mode 100644 sopel_modules/SpiceBot_LoadOrder/Startup_Complete.py delete mode 100644 sopel_modules/SpiceBot_LoadOrder/__init__.py diff --git a/sopel_modules/SpiceBot_Channels/Channels.py b/sopel_modules/SpiceBot_Channels/Channels.py index 5ce9452..9654c0c 100644 --- a/sopel_modules/SpiceBot_Channels/Channels.py +++ b/sopel_modules/SpiceBot_Channels/Channels.py @@ -6,7 +6,6 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi import sopel.module from sopel.config.types import StaticSection, ValidatedAttribute, ListAttribute -from sopel_modules.SpiceBot_LoadOrder.LoadOrder import startup_bot_event, set_bot_event from sopel_modules.SpiceBot_Events.System import bot_events_startup_register, bot_events_recieved, bot_events_trigger from sopel_modules.SpiceBot_SBTools import ( @@ -38,8 +37,6 @@ def setup(bot): bot_logging(bot, 'SpiceBot_Channels', "Starting setup procedure") bot_events_startup_register(bot, ['2001']) - startup_bot_event(bot, "SpiceBot_Channels") - bot.config.define_section("SpiceBot_Channels", SpiceBot_Channels_MainSection, validate=False) if "SpiceBot_Channels" not in bot.memory: @@ -76,7 +73,6 @@ def trigger_channel_list_initial(bot, trigger): channel_list_current(bot) foundchannelcount = len(bot.memory['SpiceBot_Channels']['channels'].keys()) bot_logging(bot, 'SpiceBot_Channels', "Channel listing finished! " + str(foundchannelcount) + " channel(s) found.") - set_bot_event(bot, "SpiceBot_Channels") bot_events_trigger(bot, 2001, "SpiceBot_Channels") join_all_channels(bot) diff --git a/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py b/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py index 8cc9f1d..d015ec2 100644 --- a/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py +++ b/sopel_modules/SpiceBot_CommandsQuery/CommandsQuery.py @@ -7,7 +7,6 @@ import sopel.module import os -from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, startup_bot_event from sopel_modules.SpiceBot_Events.System import bot_events_startup_register, bot_events_recieved, bot_events_trigger from sopel_modules.SpiceBot_SBTools import bot_logging @@ -18,8 +17,6 @@ def setup(bot): bot_logging(bot, 'SpiceBot_CommandsQuery', "Starting setup procedure") bot_events_startup_register(bot, ['2002']) - startup_bot_event(bot, "SpiceBot_CommandsQuery") - if 'SpiceBot_CommandsQuery' not in bot.memory: bot.memory['SpiceBot_CommandsQuery'] = {"counts": {}, "commands": {}} @@ -115,32 +112,32 @@ def setup(bot): validcomdict = {"comtype": comtype, "validcoms": validcoms} filelinelist.append(validcomdict) - for atlinefound in filelinelist: - - comtype = atlinefound["comtype"] - validcoms = atlinefound["validcoms"] - + if len(filelinelist): bot.memory['SpiceBot_CommandsQuery']['counts'][comtype] += 1 - # default command to filename - if "validcoms" not in dict_from_file.keys(): - dict_from_file["validcoms"] = validcoms + for atlinefound in filelinelist: - maincom = dict_from_file["validcoms"][0] - if len(dict_from_file["validcoms"]) > 1: - comaliases = spicemanip.main(dict_from_file["validcoms"], '2+', 'list') - else: - comaliases = [] + comtype = atlinefound["comtype"] + validcoms = atlinefound["validcoms"] - bot.memory['SpiceBot_CommandsQuery']['commands'][comtype][maincom] = dict_from_file - for comalias in comaliases: - if comalias not in bot.memory['SpiceBot_CommandsQuery']['commands'][comtype].keys(): - bot.memory['SpiceBot_CommandsQuery']['commands'][comtype][comalias] = {"aliasfor": maincom} + # default command to filename + if "validcoms" not in dict_from_file.keys(): + dict_from_file["validcoms"] = validcoms + + maincom = dict_from_file["validcoms"][0] + if len(dict_from_file["validcoms"]) > 1: + comaliases = spicemanip.main(dict_from_file["validcoms"], '2+', 'list') + else: + comaliases = [] + + bot.memory['SpiceBot_CommandsQuery']['commands'][comtype][maincom] = dict_from_file + for comalias in comaliases: + if comalias not in bot.memory['SpiceBot_CommandsQuery']['commands'][comtype].keys(): + bot.memory['SpiceBot_CommandsQuery']['commands'][comtype][comalias] = {"aliasfor": maincom} for comtype in ['module', 'nickname', 'rule']: bot_logging(bot, 'SpiceBot_CommandsQuery', "Found " + str(len(bot.memory['SpiceBot_CommandsQuery']['commands'][comtype].keys())) + " " + comtype + " commands.") - set_bot_event(bot, "SpiceBot_CommandsQuery") bot_events_trigger(bot, 2002, "SpiceBot_CommandsQuery") diff --git a/sopel_modules/SpiceBot_GifSearch/gifsearch.py b/sopel_modules/SpiceBot_GifSearch/gifsearch.py index ff217e7..267e7d3 100644 --- a/sopel_modules/SpiceBot_GifSearch/gifsearch.py +++ b/sopel_modules/SpiceBot_GifSearch/gifsearch.py @@ -5,7 +5,6 @@ from __future__ import unicode_literals, absolute_import, division, print_functi import sopel.module from sopel.config.types import StaticSection, ValidatedAttribute -from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, startup_bot_event from sopel_modules.SpiceBot_Events.System import bot_events_startup_register, bot_events_recieved, bot_events_trigger from sopel_modules.SpiceBot_CommandsQuery.CommandsQuery import commandsquery_register @@ -54,8 +53,6 @@ def setup(bot): bot_logging(bot, 'SpiceBot_GifSearch', "Starting Setup Procedure") bot_events_startup_register(bot, ['2003']) - startup_bot_event(bot, "SpiceBot_GifSearch") - if 'SpiceBot_GifSearch' not in bot.memory: bot.memory["SpiceBot_GifSearch"] = {"cache": {}, "badgiflinks": [], 'valid_gif_api_dict': {}} @@ -83,7 +80,6 @@ def setup(bot): for prefixcommand in bot.memory["SpiceBot_GifSearch"]['valid_gif_api_dict'].keys(): commandsquery_register(bot, "prefix", prefixcommand) - set_bot_event(bot, "SpiceBot_GifSearch") bot_events_trigger(bot, 2003, "SpiceBot_GifSearch") diff --git a/sopel_modules/SpiceBot_LoadOrder/Connected.py b/sopel_modules/SpiceBot_LoadOrder/Connected.py deleted file mode 100644 index 7fa18fa..0000000 --- a/sopel_modules/SpiceBot_LoadOrder/Connected.py +++ /dev/null @@ -1,25 +0,0 @@ -# coding=utf-8 - -from __future__ import unicode_literals, absolute_import, division, print_function - -import sopel.module -from .LoadOrder import check_bot_events, startup_bot_event, set_bot_event -from sopel_modules.SpiceBot_SBTools import bot_logging - -import time - - -@sopel.module.event('001') -@sopel.module.rule('.*') -def bot_startup_connection(bot, trigger): - - if check_bot_events(bot, ["startup_complete"]): - return - startup_bot_event(bot, "connected") - - while not len(bot.channels.keys()) > 0: - pass - time.sleep(1) - - set_bot_event(bot, "connected") - bot_logging(bot, 'Sopel_LoadOrder', "Connected to IRC") diff --git a/sopel_modules/SpiceBot_LoadOrder/LoadOrder.py b/sopel_modules/SpiceBot_LoadOrder/LoadOrder.py deleted file mode 100644 index 8856734..0000000 --- a/sopel_modules/SpiceBot_LoadOrder/LoadOrder.py +++ /dev/null @@ -1,70 +0,0 @@ -# coding=utf8 -"""Sopel_LoadOrder - -Sopel LoadOrder is a poor mans way to create module load order dependencies -""" -from __future__ import unicode_literals, absolute_import, division, print_function - -import sopel.module -from sopel_modules.SpiceBot_SBTools import bot_logging -import threading - - -def setup(bot): - bot_logging(bot, 'Sopel_LoadOrder', "Starting Module Events Logging") - - threading.Thread(target=setup_thread, args=(bot,)).start() - - -def shutdown(bot): - if "Sopel_LoadOrder" in bot.memory: - del bot.memory["Sopel_LoadOrder"] - - -def setup_thread(bot): - if "Sopel_LoadOrder" not in bot.memory: - bot.memory["Sopel_LoadOrder"] = {"loaded": [], "startup": []} - - -def list_bot_events(bot, list_type): - if "Sopel_LoadOrder" not in bot.memory: - bot.memory["Sopel_LoadOrder"] = {"loaded": [], "startup": []} - return bot.memory["Sopel_LoadOrder"][list_type] - - -def check_bot_events(bot, listreq): - if "Sopel_LoadOrder" not in bot.memory: - bot.memory["Sopel_LoadOrder"] = {"loaded": [], "startup": []} - if not isinstance(listreq, list): - listreq = [str(listreq)] - for requirement in listreq: - if requirement not in bot.memory["Sopel_LoadOrder"]["loaded"]: - return False - return True - - -def set_bot_event(bot, addonreq): - if "Sopel_LoadOrder" not in bot.memory: - bot.memory["Sopel_LoadOrder"] = {"loaded": [], "startup": []} - if not isinstance(addonreq, list): - addonreq = [str(addonreq)] - - bot.memory["Sopel_LoadOrder"]["loaded"].extend(addonreq) - - -def startup_bot_event(bot, addonreq): - if "Sopel_LoadOrder" not in bot.memory: - bot.memory["Sopel_LoadOrder"] = {"loaded": [], "startup": []} - if not isinstance(addonreq, list): - addonreq = [str(addonreq)] - - bot.memory["Sopel_LoadOrder"]["startup"].extend(addonreq) - - -def check_bot_startup(bot): - if "Sopel_LoadOrder" not in bot.memory: - bot.memory["Sopel_LoadOrder"] = {"loaded": [], "startup": []} - for startupitem in bot.memory["Sopel_LoadOrder"]["startup"]: - if startupitem not in bot.memory["Sopel_LoadOrder"]["loaded"]: - return False - return True diff --git a/sopel_modules/SpiceBot_LoadOrder/Startup_Complete.py b/sopel_modules/SpiceBot_LoadOrder/Startup_Complete.py deleted file mode 100644 index 16800ee..0000000 --- a/sopel_modules/SpiceBot_LoadOrder/Startup_Complete.py +++ /dev/null @@ -1,19 +0,0 @@ -# coding=utf-8 - -from __future__ import unicode_literals, absolute_import, division, print_function - -import sopel.module -from sopel_modules.SpiceBot_SBTools import bot_logging - -from .LoadOrder import set_bot_event, check_bot_startup - - -@sopel.module.event('001') -@sopel.module.rule('.*') -def bot_startup_complete(bot, trigger): - - while not check_bot_startup(bot): - pass - - set_bot_event(bot, "startup_complete") - bot_logging(bot, 'Sopel_LoadOrder', "Module Events Logging Complete") diff --git a/sopel_modules/SpiceBot_LoadOrder/__init__.py b/sopel_modules/SpiceBot_LoadOrder/__init__.py deleted file mode 100644 index 9307079..0000000 --- a/sopel_modules/SpiceBot_LoadOrder/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# coding=utf8 -"""Sopel_LoadOrder - -Sopel LoadOrder is a poor mans way to create module load order dependencies -""" -from __future__ import unicode_literals, absolute_import, division, print_function - -from .LoadOrder import * -from .Connected import * -from .Startup_Complete import * - - -__author__ = 'Sam Zick' -__email__ = 'sam@deathbybandaid.net' -__version__ = '0.1.1' diff --git a/sopel_modules/SpiceBot_Logs/Logs.py b/sopel_modules/SpiceBot_Logs/Logs.py index c13fbb6..951b595 100644 --- a/sopel_modules/SpiceBot_Logs/Logs.py +++ b/sopel_modules/SpiceBot_Logs/Logs.py @@ -7,7 +7,6 @@ from sopel.config.types import StaticSection, ValidatedAttribute from sopel_modules.SpiceBot_SBTools import bot_logging from sopel_modules.SpiceBot_Events.System import bot_events_startup_register, bot_events_recieved, bot_events_trigger -from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event, startup_bot_event def configure(config): @@ -25,25 +24,16 @@ def setup(bot): bot_events_startup_register(bot, ['2004']) - startup_bot_event(bot, "SpiceBot_CommandsQuery") - bot_logs_setup_check(bot) + bot_events_trigger(bot, 2004, "SpiceBot_Logs") + def bot_logs_setup_check(bot): if 'SpiceBot_Logs' not in bot.memory: bot.memory['SpiceBot_Logs'] = {"logs": {}, "queue": []} -@sopel.module.event('1003') -@sopel.module.rule('.*') -def bot_startup_logs_complete(bot, trigger): - bot_events_recieved(bot, trigger.event) - - set_bot_event(bot, "SpiceBot_Logs") - bot_events_trigger(bot, 2004, "SpiceBot_Logs") - - def shutdown(bot): if "SpiceBot_Logs" in bot.memory: del bot.memory["SpiceBot_Logs"] diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py index d4177f9..b0c8103 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py @@ -5,7 +5,6 @@ from __future__ import unicode_literals, absolute_import, division, print_functi import sopel.module from sopel_modules.SpiceBot_Events.System import bot_events_recieved, bot_events_trigger -from sopel_modules.SpiceBot_LoadOrder.LoadOrder import set_bot_event from sopel_modules.SpiceBot_SBTools import humanized_time, bot_logging import time @@ -63,5 +62,4 @@ def bot_startup_monologue_display(bot, trigger): bot_logging(bot, 'SpiceBot_StartupMonologue', bot.nick + " startup complete") bot.osd(bot.memory['SpiceBot_StartupMonologue'], bot.channels.keys()) - set_bot_event(bot, "SpiceBot_StartupMonologue") bot_events_trigger(bot, 2005, "SpiceBot_StartupMonologue") From f65212c2c3241b78fbd04cdb16d7b2d2d8250b50 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 14:32:51 -0400 Subject: [PATCH 50/53] Tweak gif searching --- sopel_modules/SpiceBot_GifSearch/gifsearch.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sopel_modules/SpiceBot_GifSearch/gifsearch.py b/sopel_modules/SpiceBot_GifSearch/gifsearch.py index 267e7d3..062f268 100644 --- a/sopel_modules/SpiceBot_GifSearch/gifsearch.py +++ b/sopel_modules/SpiceBot_GifSearch/gifsearch.py @@ -77,8 +77,11 @@ def setup(bot): valid_gif_api_dict[gif_api]["apikey"] = None bot.memory["SpiceBot_GifSearch"]['valid_gif_api_dict'][gif_api] = valid_gif_api_dict[gif_api] - for prefixcommand in bot.memory["SpiceBot_GifSearch"]['valid_gif_api_dict'].keys(): - commandsquery_register(bot, "prefix", prefixcommand) + for validgifapi in bot.memory["SpiceBot_GifSearch"]['valid_gif_api_dict'].keys(): + commandsquery_register(bot, "prefix", validgifapi) + + if validgifapi not in bot.memory["SpiceBot_GifSearch"]['cache'].keys(): + bot.memory["SpiceBot_GifSearch"]['cache'][validgifapi] = dict() bot_events_trigger(bot, 2003, "SpiceBot_GifSearch") @@ -235,7 +238,7 @@ def getGif(bot, searchdict): if gifpage and not str(gifpage.status_code).startswith(tuple(["4", "5"])): randombad = False else: - bot.memory["SpiceBot_GifSearch"]["badgiflinks"].append(gifdict["returnurl"]) + bot.memory["SpiceBot_GifSearch"]["badgiflinks"].append(str(gifdict["returnurl"])) newlist = [] for tempdict in gifapiresults: if tempdict["returnurl"] != gifdict["returnurl"]: From e54e3666dd2be4c45b8d14491d1416ffdae1d923 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 14:36:09 -0400 Subject: [PATCH 51/53] shutdown method breaks --- sopel_modules/SpiceBot_Events/Events.py | 23 +++++++++++++---------- sopel_modules/SpiceBot_Logs/Logs.py | 11 +++++++---- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/sopel_modules/SpiceBot_Events/Events.py b/sopel_modules/SpiceBot_Events/Events.py index 82b3af4..6b9b09a 100644 --- a/sopel_modules/SpiceBot_Events/Events.py +++ b/sopel_modules/SpiceBot_Events/Events.py @@ -50,16 +50,19 @@ def bot_events_connected(bot, trigger): bot_events_setup_check(bot) - while 'SpiceBot_Events' in bot.memory: - if len(bot.memory['SpiceBot_Events']["queue"]): - number = bot.memory['SpiceBot_Events']["queue"][0]["number"] - message = bot.memory['SpiceBot_Events']["queue"][0]["message"] - pretrigger = PreTrigger( - bot.nick, - ":SpiceBot_Events " + str(number) + " " + str(bot.nick) + " :" + message - ) - bot.dispatch(pretrigger) - del bot.memory['SpiceBot_Events']["queue"][0] + while True: + try: + if len(bot.memory['SpiceBot_Events']["queue"]): + number = bot.memory['SpiceBot_Events']["queue"][0]["number"] + message = bot.memory['SpiceBot_Events']["queue"][0]["message"] + pretrigger = PreTrigger( + bot.nick, + ":SpiceBot_Events " + str(number) + " " + str(bot.nick) + " :" + message + ) + bot.dispatch(pretrigger) + del bot.memory['SpiceBot_Events']["queue"][0] + except KeyError: + return @sopel.module.event('1004') diff --git a/sopel_modules/SpiceBot_Logs/Logs.py b/sopel_modules/SpiceBot_Logs/Logs.py index 951b595..de39744 100644 --- a/sopel_modules/SpiceBot_Logs/Logs.py +++ b/sopel_modules/SpiceBot_Logs/Logs.py @@ -53,10 +53,13 @@ def join_log_channel(bot, trigger): bot_logs_setup_check(bot) - while 'SpiceBot_Logs' in bot.memory: - if len(bot.memory['SpiceBot_Logs']["queue"]): - bot.say(str(bot.memory['SpiceBot_Logs']["queue"][0]), channel) - del bot.memory['SpiceBot_Logs']["queue"][0] + while True: + try: + if len(bot.memory['SpiceBot_Logs']["queue"]): + bot.say(str(bot.memory['SpiceBot_Logs']["queue"][0]), channel) + del bot.memory['SpiceBot_Logs']["queue"][0] + except KeyError: + return @sopel.module.event('2004') From d589161481b14d60e0af5cb3ad2241f535c97370 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 14:41:50 -0400 Subject: [PATCH 52/53] Stop processing at close --- sopel_modules/SpiceBot_Channels/Channels.py | 35 +++++++++++---------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/sopel_modules/SpiceBot_Channels/Channels.py b/sopel_modules/SpiceBot_Channels/Channels.py index 9654c0c..8263bfb 100644 --- a/sopel_modules/SpiceBot_Channels/Channels.py +++ b/sopel_modules/SpiceBot_Channels/Channels.py @@ -81,27 +81,30 @@ def trigger_channel_list_initial(bot, trigger): if "*" in bot.memory['SpiceBot_Channels']['channels']: del bot.memory['SpiceBot_Channels']['channels']["*"] - while 'SpiceBot_Channels' in bot.memory: - time.sleep(1800) - oldlist = list(bot.memory['SpiceBot_Channels']['channels'].keys()) - bot.write(['LIST']) - bot.memory['SpiceBot_Channels']['ProcessLock'] = True + while True: + try: + time.sleep(1800) + oldlist = list(bot.memory['SpiceBot_Channels']['channels'].keys()) + bot.write(['LIST']) + bot.memory['SpiceBot_Channels']['ProcessLock'] = True - while bot.memory['SpiceBot_Channels']['ProcessLock']: - pass + while bot.memory['SpiceBot_Channels']['ProcessLock']: + pass - newlist = [item.lower() for item in oldlist if item.lower() not in bot.memory['SpiceBot_Channels']['channels']] - if "*" in newlist: - newlist.remove("*") - if len(newlist) and bot.config.SpiceBot_Channels.announcenew: - bot.osd(["The Following channel(s) are new:", spicemanip.main(newlist, 'andlist')], bot.channels.keys()) + newlist = [item.lower() for item in oldlist if item.lower() not in bot.memory['SpiceBot_Channels']['channels']] + if "*" in newlist: + newlist.remove("*") + if len(newlist) and bot.config.SpiceBot_Channels.announcenew: + bot.osd(["The Following channel(s) are new:", spicemanip.main(newlist, 'andlist')], bot.channels.keys()) - join_all_channels(bot) + join_all_channels(bot) - chanadmin_all_channels(bot) + chanadmin_all_channels(bot) - if "*" in bot.memory['SpiceBot_Channels']['channels']: - del bot.memory['SpiceBot_Channels']['channels']["*"] + if "*" in bot.memory['SpiceBot_Channels']['channels']: + del bot.memory['SpiceBot_Channels']['channels']["*"] + except KeyError: + return @sopel.module.event('2001') From ff48963265a7fff392f14de90134c3ff39dbb657 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 6 May 2019 14:49:26 -0400 Subject: [PATCH 53/53] Adust display --- .../SpiceBot_StartupMonologue/StartupMonologue_Display.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py index b0c8103..d80409c 100644 --- a/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py +++ b/sopel_modules/SpiceBot_StartupMonologue/StartupMonologue_Display.py @@ -60,6 +60,8 @@ def bot_startup_monologue_display(bot, trigger): # Announce to chan, then handle some closing stuff bot_logging(bot, 'SpiceBot_StartupMonologue', bot.nick + " startup complete") - bot.osd(bot.memory['SpiceBot_StartupMonologue'], bot.channels.keys()) + bot.memory['SpiceBot_StartupMonologue'].insert(0, " startup complete") + + bot.osd(bot.memory['SpiceBot_StartupMonologue'], bot.channels.keys(), 'ACTION') bot_events_trigger(bot, 2005, "SpiceBot_StartupMonologue")