From 2db36a6d2e3a8806cf41bd42500f30e0c6498dc4 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Wed, 3 Jul 2019 11:04:21 -0400 Subject: [PATCH 01/43] patch --- sopel_modules/SpiceBot_Core_Commands/Database.py | 2 +- sopel_modules/SpiceBot_Core_Commands/Docs.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot_Core_Commands/Database.py b/sopel_modules/SpiceBot_Core_Commands/Database.py index 8a811e8..d2807c2 100644 --- a/sopel_modules/SpiceBot_Core_Commands/Database.py +++ b/sopel_modules/SpiceBot_Core_Commands/Database.py @@ -12,5 +12,5 @@ import sopel_modules.SpiceBot as SpiceBot @SpiceBot.prerun('nickname') @sopel.module.nickname_commands('database') -def bot_command_database(bot, trigger): +def bot_command_database(bot, trigger, botcom): bot.osd("Database is " + SpiceBot.config.db_type) diff --git a/sopel_modules/SpiceBot_Core_Commands/Docs.py b/sopel_modules/SpiceBot_Core_Commands/Docs.py index 9e9090f..0d9883d 100644 --- a/sopel_modules/SpiceBot_Core_Commands/Docs.py +++ b/sopel_modules/SpiceBot_Core_Commands/Docs.py @@ -9,7 +9,7 @@ import sopel_modules.SpiceBot as SpiceBot @SpiceBot.prerun('nickname') @sopel.module.nickname_commands('help', 'docs', 'wiki') -def bot_command_docs(bot, trigger): +def bot_command_docs(bot, trigger, botcom): sb_git_url = str( SpiceBot.github_dict["url_main"] + SpiceBot.github_dict["repo_owner"] + "/" + From 23755b4f5bb0feb0a720248f8aefc93e67483f75 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Wed, 3 Jul 2019 11:07:57 -0400 Subject: [PATCH 02/43] query is the same --- sopel_modules/SpiceBot/Prerun.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sopel_modules/SpiceBot/Prerun.py b/sopel_modules/SpiceBot/Prerun.py index 59d9d82..da0dabf 100644 --- a/sopel_modules/SpiceBot/Prerun.py +++ b/sopel_modules/SpiceBot/Prerun.py @@ -119,6 +119,14 @@ def prerun_query(t_command_type='module', t_command_subtype=None): @functools.wraps(function) def internal_prerun(bot, trigger, *args, **kwargs): + # verify the bot is at a loaded state + while not botevents.check(botevents.BOT_LOADED): + pass + + # Verify channel and user exist + verify_channel(trigger) + verify_user(trigger) + botcom = class_create('botcom') if t_command_type == "nickname": From 4de9ac7e7bc83740ef9bac573a82f4841330d562 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Wed, 3 Jul 2019 11:33:25 -0400 Subject: [PATCH 03/43] reminder --- sopel_modules/SpiceBot/Prerun.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sopel_modules/SpiceBot/Prerun.py b/sopel_modules/SpiceBot/Prerun.py index da0dabf..aee4d0d 100644 --- a/sopel_modules/SpiceBot/Prerun.py +++ b/sopel_modules/SpiceBot/Prerun.py @@ -418,6 +418,7 @@ def trigger_hyphen_args(trigger_args_part): def trigger_hyphen_arg_handler(bot, trigger): # Commands that cannot run via privmsg + # TODO --check should work for commands that don't exist if trigger.sb["hyphen_arg"] in ['check']: if trigger.sb["com"].lower() != trigger.sb["realcom"]: botmessagelog.messagelog(trigger.sb["log_id"], trigger.sb["comtext"] + " is a valid alias command for " + trigger.sb["realcomtext"]) From 4cad278049f6ec88891eebd22c41c8d56c5e2a1e Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Wed, 3 Jul 2019 16:12:30 -0400 Subject: [PATCH 04/43] update --- sopel_modules/SpiceBot/Database.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/sopel_modules/SpiceBot/Database.py b/sopel_modules/SpiceBot/Database.py index 8d667f6..a3d4a24 100644 --- a/sopel_modules/SpiceBot/Database.py +++ b/sopel_modules/SpiceBot/Database.py @@ -20,6 +20,9 @@ import threading BASE = declarative_base() +MYSQL_TABLE_ARGS = {'mysql_engine': 'InnoDB', + 'mysql_charset': 'utf8mb4', + 'mysql_collate': 'utf8mb4_unicode_ci'} class NickIDs(BASE): @@ -35,7 +38,7 @@ class Nicknames(BASE): Nicknames SQLAlchemy Class """ __tablename__ = 'spice_nicknames' - __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8mb4', 'mysql_collate': 'utf8mb4_unicode_ci'} + __table_args__ = MYSQL_TABLE_ARGS nick_id = Column(Integer, ForeignKey('spice_nick_ids.nick_id'), primary_key=True) slug = Column(String(255), primary_key=True) canonical = Column(String(255)) @@ -46,7 +49,7 @@ class NickValues(BASE): NickValues SQLAlchemy Class """ __tablename__ = 'spice_nick_values' - __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8mb4', 'mysql_collate': 'utf8mb4_unicode_ci'} + __table_args__ = MYSQL_TABLE_ARGS nick_id = Column(Integer, ForeignKey('spice_nick_ids.nick_id'), primary_key=True) namespace = Column(String(255), primary_key=True) key = Column(String(255), primary_key=True) @@ -58,7 +61,7 @@ class ChannelValues(BASE): ChannelValues SQLAlchemy Class """ __tablename__ = 'spice_channel_values' - __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8mb4', 'mysql_collate': 'utf8mb4_unicode_ci'} + __table_args__ = MYSQL_TABLE_ARGS channel = Column(String(255), primary_key=True) namespace = Column(String(255), primary_key=True) key = Column(String(255), primary_key=True) @@ -70,7 +73,7 @@ class PluginValues(BASE): PluginValues SQLAlchemy Class """ __tablename__ = 'spice_plugin_values' - __table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8mb4', 'mysql_collate': 'utf8mb4_unicode_ci'} + __table_args__ = MYSQL_TABLE_ARGS plugin = Column(String(255), primary_key=True) namespace = Column(String(255), primary_key=True) key = Column(String(255), primary_key=True) From dfb3216cd1b72580fdd0854cc083dd1efd3dd8e2 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 08:18:49 -0400 Subject: [PATCH 05/43] test for server name --- sopel_modules/SpiceBot/Server.py | 14 ++++++++++++++ sopel_modules/SpiceBot/__init__.py | 1 + sopel_modules/SpiceBot_Core_Processing/Server.py | 14 ++++++++++++++ sopel_modules/SpiceBot_Core_Processing/__init__.py | 1 + 4 files changed, 30 insertions(+) create mode 100644 sopel_modules/SpiceBot/Server.py create mode 100644 sopel_modules/SpiceBot_Core_Processing/Server.py diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py new file mode 100644 index 0000000..f7c01a6 --- /dev/null +++ b/sopel_modules/SpiceBot/Server.py @@ -0,0 +1,14 @@ +# coding=utf8 +from __future__ import unicode_literals, absolute_import, division, print_function +""" +This is the SpiceBot Server system. +""" + + +class BotServer(): + """This Logs all server values of relevance'""" + def __init__(self): + self.dict = {} + + +server = BotServer() diff --git a/sopel_modules/SpiceBot/__init__.py b/sopel_modules/SpiceBot/__init__.py index 7826238..e0836fa 100644 --- a/sopel_modules/SpiceBot/__init__.py +++ b/sopel_modules/SpiceBot/__init__.py @@ -21,6 +21,7 @@ from .Prerun import * from .Commands import * from .Events import * from .StartupMonologue import * +from .Server import * from .Channels import * from .Users import * from .AI import * diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py new file mode 100644 index 0000000..bdf5077 --- /dev/null +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -0,0 +1,14 @@ +# coding=utf8 +from __future__ import unicode_literals, absolute_import, division, print_function +""" +This is the SpiceBot Channels system. +""" +import sopel + +import sopel_modules.SpiceBot as SpiceBot + + +@sopel.module.event(SpiceBot.events.RPL_WELCOME) +@sopel.module.rule('.*') +def server_name(bot, trigger): + bot.say(str(trigger.sender), "deathbybandaid") diff --git a/sopel_modules/SpiceBot_Core_Processing/__init__.py b/sopel_modules/SpiceBot_Core_Processing/__init__.py index ed8f775..108492b 100644 --- a/sopel_modules/SpiceBot_Core_Processing/__init__.py +++ b/sopel_modules/SpiceBot_Core_Processing/__init__.py @@ -7,6 +7,7 @@ This module contains references only for other modules to utilize. """ # pylama:ignore=W0401,W0611 +from .Server import * from .Channels import * from .Users import * from .Events import * From c133dadd91e676de759e107f4bd4bb11b47f9bb7 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 08:26:35 -0400 Subject: [PATCH 06/43] log host name --- sopel_modules/SpiceBot/Server.py | 15 ++++++++++++++- sopel_modules/SpiceBot_Core_Processing/Server.py | 3 ++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index f7c01a6..b695cc7 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -4,11 +4,24 @@ from __future__ import unicode_literals, absolute_import, division, print_functi This is the SpiceBot Server system. """ +from .Config import config as botconfig + class BotServer(): """This Logs all server values of relevance'""" def __init__(self): - self.dict = {} + self.dict = { + "host_connect": botconfig.core.host, + "host": botconfig.core.host, + } + + def __getattr__(self, name): + ''' will only get called for undefined attributes ''' + """We will try to find a dict value, or return None""" + if name.lower() in list(self.dict.keys()): + return self.dict[str(name).lower()] + else: + raise Exception('Server dict does not contain a function or key ' + str(name.lower())) server = BotServer() diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index bdf5077..06fbac7 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -11,4 +11,5 @@ import sopel_modules.SpiceBot as SpiceBot @sopel.module.event(SpiceBot.events.RPL_WELCOME) @sopel.module.rule('.*') def server_name(bot, trigger): - bot.say(str(trigger.sender), "deathbybandaid") + SpiceBot.server.dict["host"] = str(trigger.sender).lower() + bot.say(str(SpiceBot.server.host), "deathbybandaid") From 0c2b1bc5e19ef3008ba676327131f3b0a68361f0 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 08:28:47 -0400 Subject: [PATCH 07/43] better unified log placing --- sopel_modules/SpiceBot/Server.py | 3 +++ sopel_modules/SpiceBot_Core_Processing/Server.py | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index b695cc7..9b8dafc 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -23,5 +23,8 @@ class BotServer(): else: raise Exception('Server dict does not contain a function or key ' + str(name.lower())) + def rpl_welcome(self, trigger): + self.dict["host"] = str(trigger.sender).lower() + server = BotServer() diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index 06fbac7..aa174d5 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -11,5 +11,4 @@ import sopel_modules.SpiceBot as SpiceBot @sopel.module.event(SpiceBot.events.RPL_WELCOME) @sopel.module.rule('.*') def server_name(bot, trigger): - SpiceBot.server.dict["host"] = str(trigger.sender).lower() - bot.say(str(SpiceBot.server.host), "deathbybandaid") + SpiceBot.server.rpl_welcome(trigger) From 65dcca14d2757fbdd0f2eb00f6018c336185b29f Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 08:32:56 -0400 Subject: [PATCH 08/43] more updates --- sopel_modules/SpiceBot/Events.py | 3 ++- sopel_modules/SpiceBot_Core_Processing/Kick.py | 6 ++++-- sopel_modules/SpiceBot_Core_Processing/osd.py | 7 +++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/sopel_modules/SpiceBot/Events.py b/sopel_modules/SpiceBot/Events.py index ac5cfc5..6b8afe4 100644 --- a/sopel_modules/SpiceBot/Events.py +++ b/sopel_modules/SpiceBot/Events.py @@ -35,8 +35,9 @@ class BotEvents(object): def __init__(self): self.lock = threading.Lock() self.RPL_WELCOME = '001' # This is a defined IRC event - self.RPL_NAMREPLY = '353' # This is a defined IRC event + self.RPL_ISUPPORT = '005' # This is a defined IRC event self.RPL_WHOREPLY = '352' # This is a defined IRC event + self.RPL_NAMREPLY = '353' # This is a defined IRC event self.BOT_UPTIME = time.time() self.BOT_WELCOME = '1001' self.BOT_READY = '1002' diff --git a/sopel_modules/SpiceBot_Core_Processing/Kick.py b/sopel_modules/SpiceBot_Core_Processing/Kick.py index f0586e9..faa5f92 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Kick.py +++ b/sopel_modules/SpiceBot_Core_Processing/Kick.py @@ -5,10 +5,12 @@ This is the SpiceBot OSD system. """ import sopel +import sopel_modules.SpiceBot as SpiceBot -@sopel.module.event('005') + +@sopel.module.event(SpiceBot.events.RPL_ISUPPORT) @sopel.module.rule('.*') -def parse_event_005(bot, trigger): +def parse_event_005_kick(bot, trigger): if trigger.args[-1] != 'are supported by this server': return parameters = trigger.args[1:-1] diff --git a/sopel_modules/SpiceBot_Core_Processing/osd.py b/sopel_modules/SpiceBot_Core_Processing/osd.py index 88d2bf5..245aeda 100644 --- a/sopel_modules/SpiceBot_Core_Processing/osd.py +++ b/sopel_modules/SpiceBot_Core_Processing/osd.py @@ -6,9 +6,12 @@ This is the SpiceBot OSD system. import sopel -@sopel.module.event('005') +import sopel_modules.SpiceBot as SpiceBot + + +@sopel.module.event(SpiceBot.events.RPL_ISUPPORT) @sopel.module.rule('.*') -def parse_event_005(bot, trigger): +def parse_event_005_osd(bot, trigger): if trigger.args[-1] != 'are supported by this server': return parameters = trigger.args[1:-1] From ab1394e6ff043631fab90b134758c4f9e4bf320e Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 08:50:26 -0400 Subject: [PATCH 09/43] test --- sopel_modules/SpiceBot/Server.py | 36 +++++++++++++++++++ .../SpiceBot_Core_Processing/Server.py | 8 +++++ 2 files changed, 44 insertions(+) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index 9b8dafc..df1789d 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -10,10 +10,14 @@ from .Config import config as botconfig class BotServer(): """This Logs all server values of relevance'""" def __init__(self): + self.linenumber = 0 self.dict = { "host_connect": botconfig.core.host, "host": botconfig.core.host, } + self.isupport = { + "TARGMAX": {}, + } def __getattr__(self, name): ''' will only get called for undefined attributes ''' @@ -26,5 +30,37 @@ class BotServer(): def rpl_welcome(self, trigger): self.dict["host"] = str(trigger.sender).lower() + def parse_reply_isupport(self, trigger): + + # check against 005_Bounce + if trigger.args[-1] != 'are supported by this server': + return + + parameters = trigger.args[1:-1] + for param in parameters: + if '=' in param: + if param.startswith("TARGMAX"): + param = str(param).split('=')[1] + settings = str(param).split(',') + for setting in settings: + settingname = str(setting).split(':')[0] + if settingname.upper() in ['NOTICE', 'PRIVMSG']: + try: + value = str(setting).split(':')[1] or None + except IndexError: + value = None + if value: + if settingname.upper() == 'NOTICE': + botconfig.SpiceBot_OSD.notice = int(value) + elif settingname.upper() == 'PRIVMSG': + botconfig.SpiceBot_OSD.privmsg = int(value) + if settingname.upper() in ['KICK']: + try: + value = str(setting).split(':')[1] or None + except IndexError: + value = None + if value: + botconfig.SpiceBot_Kick.kick = int(value) + server = BotServer() diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index aa174d5..a633405 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -12,3 +12,11 @@ import sopel_modules.SpiceBot as SpiceBot @sopel.module.rule('.*') def server_name(bot, trigger): SpiceBot.server.rpl_welcome(trigger) + + +@sopel.module.event(SpiceBot.events.RPL_ISUPPORT) +@sopel.module.rule('.*') +def parse_event_005(bot, trigger): + SpiceBot.server.linenumber += 1 + bot.osd([str(SpiceBot.server.linenumber), str(trigger)], "deathbybandaid") + # SpiceBot.server.parse_reply_isupport(trigger) From 3c7d19d132161f61bad306727dd33669a18ea559 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 08:51:52 -0400 Subject: [PATCH 10/43] test --- sopel_modules/SpiceBot_Core_Processing/Server.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index a633405..1eef896 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -17,6 +17,9 @@ def server_name(bot, trigger): @sopel.module.event(SpiceBot.events.RPL_ISUPPORT) @sopel.module.rule('.*') def parse_event_005(bot, trigger): + if trigger.args[-1] != 'are supported by this server': + return + parameters = trigger.args[1:-1] SpiceBot.server.linenumber += 1 - bot.osd([str(SpiceBot.server.linenumber), str(trigger)], "deathbybandaid") + bot.osd([str(SpiceBot.server.linenumber), str(parameters)], "deathbybandaid") # SpiceBot.server.parse_reply_isupport(trigger) From 4bcd12aa6091711d186b57dde1b9cd877d26efc1 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 08:58:06 -0400 Subject: [PATCH 11/43] test --- sopel_modules/SpiceBot_Core_Processing/Server.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index 1eef896..c438b87 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -17,9 +17,10 @@ def server_name(bot, trigger): @sopel.module.event(SpiceBot.events.RPL_ISUPPORT) @sopel.module.rule('.*') def parse_event_005(bot, trigger): + # SpiceBot.server.parse_reply_isupport(trigger) if trigger.args[-1] != 'are supported by this server': return - parameters = trigger.args[1:-1] SpiceBot.server.linenumber += 1 - bot.osd([str(SpiceBot.server.linenumber), str(parameters)], "deathbybandaid") - # SpiceBot.server.parse_reply_isupport(trigger) + parameters = trigger.args[1:-1] + for param in parameters: + bot.osd(str(param), "#deathbybandaid") From c8be560387183883ac2b7d7289d0a3b130000799 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 09:02:43 -0400 Subject: [PATCH 12/43] test --- sopel_modules/SpiceBot/Server.py | 48 ++++++++++--------- .../SpiceBot_Core_Processing/Server.py | 5 +- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index df1789d..926119e 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -38,29 +38,33 @@ class BotServer(): parameters = trigger.args[1:-1] for param in parameters: + + # check for value associated with the parameter if '=' in param: - if param.startswith("TARGMAX"): - param = str(param).split('=')[1] - settings = str(param).split(',') - for setting in settings: - settingname = str(setting).split(':')[0] - if settingname.upper() in ['NOTICE', 'PRIVMSG']: - try: - value = str(setting).split(':')[1] or None - except IndexError: - value = None - if value: - if settingname.upper() == 'NOTICE': - botconfig.SpiceBot_OSD.notice = int(value) - elif settingname.upper() == 'PRIVMSG': - botconfig.SpiceBot_OSD.privmsg = int(value) - if settingname.upper() in ['KICK']: - try: - value = str(setting).split(':')[1] or None - except IndexError: - value = None - if value: - botconfig.SpiceBot_Kick.kick = int(value) + paramname = str(param).split('=')[0] + if param in list(self.isupport.keys()): + if param.startswith("TARGMAX"): + param = str(param).split('=')[1] + settings = str(param).split(',') + for setting in settings: + settingname = str(setting).split(':')[0] + if settingname.upper() in ['NOTICE', 'PRIVMSG']: + try: + value = str(setting).split(':')[1] or None + except IndexError: + value = None + if value: + if settingname.upper() == 'NOTICE': + botconfig.SpiceBot_OSD.notice = int(value) + elif settingname.upper() == 'PRIVMSG': + botconfig.SpiceBot_OSD.privmsg = int(value) + if settingname.upper() in ['KICK']: + try: + value = str(setting).split(':')[1] or None + except IndexError: + value = None + if value: + botconfig.SpiceBot_Kick.kick = int(value) server = BotServer() diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index c438b87..8fedef1 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -23,4 +23,7 @@ def parse_event_005(bot, trigger): SpiceBot.server.linenumber += 1 parameters = trigger.args[1:-1] for param in parameters: - bot.osd(str(param), "#deathbybandaid") + if '=' in param: + paramname = str(param).split('=')[0] + paramvalue = str(param).split('=')[1] + bot.osd([str(paramname), "=", str(paramvalue)], "#deathbybandaid") From 4a56a968cb97625059e0e0133a4dfadc87d94f33 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 09:13:49 -0400 Subject: [PATCH 13/43] test --- sopel_modules/SpiceBot/Server.py | 14 +++++++++----- sopel_modules/SpiceBot_Core_Processing/Server.py | 10 +++++++--- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index 926119e..3444c2d 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -41,11 +41,15 @@ class BotServer(): # check for value associated with the parameter if '=' in param: - paramname = str(param).split('=')[0] - if param in list(self.isupport.keys()): - if param.startswith("TARGMAX"): - param = str(param).split('=')[1] - settings = str(param).split(',') + key, raw_value = param.split('=') + + # Only gather parameters that we want + if key in list(self.isupport.keys()): + + if key.upper() == "TARGMAX": + + # split the settings by comma seperation + settings = str(raw_value).split(',') for setting in settings: settingname = str(setting).split(':')[0] if settingname.upper() in ['NOTICE', 'PRIVMSG']: diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index 8fedef1..a78669b 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -24,6 +24,10 @@ def parse_event_005(bot, trigger): parameters = trigger.args[1:-1] for param in parameters: if '=' in param: - paramname = str(param).split('=')[0] - paramvalue = str(param).split('=')[1] - bot.osd([str(paramname), "=", str(paramvalue)], "#deathbybandaid") + key, raw_value = param.split('=') + if ',' not in raw_value: + settings = str(raw_value).split(',') + for setting in settings: + bot.osd([str(key), "includes", str(setting)], "#deathbybandaid") + else: + bot.osd([str(key), "=", str(raw_value)], "#deathbybandaid") From 021e50a8dbd2687b70e8b2a44609171d7ba2a28e Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 09:14:52 -0400 Subject: [PATCH 14/43] test --- sopel_modules/SpiceBot_Core_Processing/Server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index a78669b..6037684 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -25,7 +25,7 @@ def parse_event_005(bot, trigger): for param in parameters: if '=' in param: key, raw_value = param.split('=') - if ',' not in raw_value: + if ',' in raw_value: settings = str(raw_value).split(',') for setting in settings: bot.osd([str(key), "includes", str(setting)], "#deathbybandaid") From 231e29f199b2c36c704e62645d96b054332f3331 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 09:35:51 -0400 Subject: [PATCH 15/43] te4sw --- sopel_modules/SpiceBot/Server.py | 19 +++++++++++++++---- .../SpiceBot_Core_Processing/Server.py | 2 ++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index 3444c2d..8b91169 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -16,7 +16,9 @@ class BotServer(): "host": botconfig.core.host, } self.isupport = { - "TARGMAX": {}, + "TARGMAX": { + "KICK": 1, + }, } def __getattr__(self, name): @@ -24,6 +26,8 @@ class BotServer(): """We will try to find a dict value, or return None""" if name.lower() in list(self.dict.keys()): return self.dict[str(name).lower()] + elif name.lower() in list(self.isupport.keys()): + return self.dict[str(name).lower()] else: raise Exception('Server dict does not contain a function or key ' + str(name.lower())) @@ -40,11 +44,18 @@ class BotServer(): for param in parameters: # check for value associated with the parameter - if '=' in param: + if '=' not in param: + self.isupport[param] = None + else: key, raw_value = param.split('=') - # Only gather parameters that we want - if key in list(self.isupport.keys()): + if ',' not in raw_value: + self.isupport[key] = raw_value + else: + + settings = str(raw_value).split(',') + for setting in settings: + settingname, setting_value = param.split('=') if key.upper() == "TARGMAX": diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index 6037684..70ac19d 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -30,4 +30,6 @@ def parse_event_005(bot, trigger): for setting in settings: bot.osd([str(key), "includes", str(setting)], "#deathbybandaid") else: + if not raw_value: + raw_value = None bot.osd([str(key), "=", str(raw_value)], "#deathbybandaid") From 8dcc2276e1833429d6c7b647a121c9cebc23ea89 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 09:40:11 -0400 Subject: [PATCH 16/43] test --- sopel_modules/SpiceBot/Server.py | 2 +- sopel_modules/SpiceBot_Core_Processing/Server.py | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index 8b91169..0d68b9a 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -55,7 +55,7 @@ class BotServer(): settings = str(raw_value).split(',') for setting in settings: - settingname, setting_value = param.split('=') + settingname, setting_value = setting.split(',') if key.upper() == "TARGMAX": diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index 70ac19d..58f6484 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -25,11 +25,12 @@ def parse_event_005(bot, trigger): for param in parameters: if '=' in param: key, raw_value = param.split('=') - if ',' in raw_value: - settings = str(raw_value).split(',') - for setting in settings: - bot.osd([str(key), "includes", str(setting)], "#deathbybandaid") - else: + if ',' not in raw_value: if not raw_value: raw_value = None bot.osd([str(key), "=", str(raw_value)], "#deathbybandaid") + else: + settings = str(raw_value).split(',') + for setting in settings: + settingname, setting_value = setting.split(',') + bot.osd([str(key), str(settingname), "=", str(setting)], "#deathbybandaid") From 6f5bc93f0ef8179ba418162eabb32225b2a00aa0 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 10:51:22 -0400 Subject: [PATCH 17/43] test --- sopel_modules/SpiceBot/Server.py | 43 ++++++++----------- sopel_modules/SpiceBot/osd.py | 6 ++- .../SpiceBot_Core_Processing/Server.py | 19 +------- 3 files changed, 24 insertions(+), 44 deletions(-) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index 0d68b9a..a07489c 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -17,7 +17,9 @@ class BotServer(): } self.isupport = { "TARGMAX": { - "KICK": 1, + "KICK": botconfig.SpiceBot_Kick.kick, + 'NOTICE': botconfig.SpiceBot_OSD.notice, + 'PRIVMSG': botconfig.SpiceBot_OSD.privmsg, }, } @@ -47,39 +49,30 @@ class BotServer(): if '=' not in param: self.isupport[param] = None else: - key, raw_value = param.split('=') + key, raw_value = param.split('=') if ',' not in raw_value: self.isupport[key] = raw_value else: + if key not in list(self.isupport.keys()): + self.isupport[key] = {} + + if not isinstance(self.isupport[key], dict): + self.isupport[key] = {} + settings = str(raw_value).split(',') for setting in settings: - settingname, setting_value = setting.split(',') - if key.upper() == "TARGMAX": + if ":" not in setting: + self.isupport[key][setting] = None + else: - # split the settings by comma seperation - settings = str(raw_value).split(',') - for setting in settings: - settingname = str(setting).split(':')[0] - if settingname.upper() in ['NOTICE', 'PRIVMSG']: - try: - value = str(setting).split(':')[1] or None - except IndexError: - value = None - if value: - if settingname.upper() == 'NOTICE': - botconfig.SpiceBot_OSD.notice = int(value) - elif settingname.upper() == 'PRIVMSG': - botconfig.SpiceBot_OSD.privmsg = int(value) - if settingname.upper() in ['KICK']: - try: - value = str(setting).split(':')[1] or None - except IndexError: - value = None - if value: - botconfig.SpiceBot_Kick.kick = int(value) + setting_name, setting_value = setting.split(":") + if str(setting_value).isdigit(): + setting_value = int(setting_value) + + self.isupport[key][setting_name] = setting_value server = BotServer() diff --git a/sopel_modules/SpiceBot/osd.py b/sopel_modules/SpiceBot/osd.py index 7b39f6d..daf447d 100644 --- a/sopel_modules/SpiceBot/osd.py +++ b/sopel_modules/SpiceBot/osd.py @@ -12,6 +12,8 @@ import time from collections import abc import sys +from .Server import config as botserver + class SpiceBot_OSD(StaticSection): @@ -62,9 +64,9 @@ class ToolsOSD: raise ValueError("Recipients list empty.") if text_method == 'NOTICE': - maxtargets = bot.config.SpiceBot_OSD.notice + maxtargets = botserver.isupport["TARGMAX"]["NOTICE"] elif text_method in ['PRIVMSG', 'ACTION']: - maxtargets = bot.config.SpiceBot_OSD.privmsg + maxtargets = botserver.isupport["TARGMAX"]["PRIVMSG"] maxtargets = int(maxtargets) recipientgroups = [] diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index 58f6484..f00601c 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -17,20 +17,5 @@ def server_name(bot, trigger): @sopel.module.event(SpiceBot.events.RPL_ISUPPORT) @sopel.module.rule('.*') def parse_event_005(bot, trigger): - # SpiceBot.server.parse_reply_isupport(trigger) - if trigger.args[-1] != 'are supported by this server': - return - SpiceBot.server.linenumber += 1 - parameters = trigger.args[1:-1] - for param in parameters: - if '=' in param: - key, raw_value = param.split('=') - if ',' not in raw_value: - if not raw_value: - raw_value = None - bot.osd([str(key), "=", str(raw_value)], "#deathbybandaid") - else: - settings = str(raw_value).split(',') - for setting in settings: - settingname, setting_value = setting.split(',') - bot.osd([str(key), str(settingname), "=", str(setting)], "#deathbybandaid") + SpiceBot.server.parse_reply_isupport(trigger) + bot.osd(str(SpiceBot.server.isupport)) From 69594b9e4fa271eb68b7574d83db6b10631ed07a Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 10:53:41 -0400 Subject: [PATCH 18/43] test --- sopel_modules/SpiceBot/Server.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index a07489c..788bf79 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -23,16 +23,6 @@ class BotServer(): }, } - def __getattr__(self, name): - ''' will only get called for undefined attributes ''' - """We will try to find a dict value, or return None""" - if name.lower() in list(self.dict.keys()): - return self.dict[str(name).lower()] - elif name.lower() in list(self.isupport.keys()): - return self.dict[str(name).lower()] - else: - raise Exception('Server dict does not contain a function or key ' + str(name.lower())) - def rpl_welcome(self, trigger): self.dict["host"] = str(trigger.sender).lower() From a65b7dcfae7b1d042756fb51a95c7a0b5794cc60 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 11:01:42 -0400 Subject: [PATCH 19/43] patch --- sopel_modules/SpiceBot/Server.py | 9 +++++++++ sopel_modules/SpiceBot/setup.py | 2 -- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index 788bf79..72449dd 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -5,11 +5,14 @@ This is the SpiceBot Server system. """ from .Config import config as botconfig +from .osd import SpiceBot_OSD +from .Kick import SpiceBot_Kick class BotServer(): """This Logs all server values of relevance'""" def __init__(self): + self.setup_isupport() self.linenumber = 0 self.dict = { "host_connect": botconfig.core.host, @@ -23,6 +26,10 @@ class BotServer(): }, } + def setup_isupport(self): + botconfig.define_section("SpiceBot_OSD", SpiceBot_OSD, validate=False) + botconfig.define_section("SpiceBot_Kick", SpiceBot_Kick, validate=False) + def rpl_welcome(self, trigger): self.dict["host"] = str(trigger.sender).lower() @@ -42,6 +49,8 @@ class BotServer(): key, raw_value = param.split('=') if ',' not in raw_value: + if str(raw_value).isdigit(): + setting_value = int(raw_value) self.isupport[key] = raw_value else: diff --git a/sopel_modules/SpiceBot/setup.py b/sopel_modules/SpiceBot/setup.py index 71c61ad..0a60978 100644 --- a/sopel_modules/SpiceBot/setup.py +++ b/sopel_modules/SpiceBot/setup.py @@ -137,7 +137,6 @@ def setup_osd(bot): # verify config settings for server logs.log('SpiceBot_OSD', "Checking for config settings") bot.config.define_section("SpiceBot_OSD", SpiceBot_OSD, validate=False) - botconfig.define_section("SpiceBot_OSD", SpiceBot_OSD, validate=False) def setup_kick(bot): @@ -149,7 +148,6 @@ def setup_kick(bot): # verify config settings for server logs.log('SpiceBot_Kick', "Checking for config settings") bot.config.define_section("SpiceBot_Kick", SpiceBot_Kick, validate=False) - botconfig.define_section("SpiceBot_Kick", SpiceBot_Kick, validate=False) def setup_gif(bot): From 0c5b19e6d25984fd85c3fbfee420e2df75a5e59c Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 11:04:54 -0400 Subject: [PATCH 20/43] test --- sopel_modules/SpiceBot/Server.py | 12 +++--------- sopel_modules/SpiceBot/setup.py | 2 ++ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index 72449dd..6b292d6 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -5,8 +5,6 @@ This is the SpiceBot Server system. """ from .Config import config as botconfig -from .osd import SpiceBot_OSD -from .Kick import SpiceBot_Kick class BotServer(): @@ -20,16 +18,12 @@ class BotServer(): } self.isupport = { "TARGMAX": { - "KICK": botconfig.SpiceBot_Kick.kick, - 'NOTICE': botconfig.SpiceBot_OSD.notice, - 'PRIVMSG': botconfig.SpiceBot_OSD.privmsg, + "KICK": 1, + 'NOTICE': 1, + 'PRIVMSG': 1, }, } - def setup_isupport(self): - botconfig.define_section("SpiceBot_OSD", SpiceBot_OSD, validate=False) - botconfig.define_section("SpiceBot_Kick", SpiceBot_Kick, validate=False) - def rpl_welcome(self, trigger): self.dict["host"] = str(trigger.sender).lower() diff --git a/sopel_modules/SpiceBot/setup.py b/sopel_modules/SpiceBot/setup.py index 0a60978..71c61ad 100644 --- a/sopel_modules/SpiceBot/setup.py +++ b/sopel_modules/SpiceBot/setup.py @@ -137,6 +137,7 @@ def setup_osd(bot): # verify config settings for server logs.log('SpiceBot_OSD', "Checking for config settings") bot.config.define_section("SpiceBot_OSD", SpiceBot_OSD, validate=False) + botconfig.define_section("SpiceBot_OSD", SpiceBot_OSD, validate=False) def setup_kick(bot): @@ -148,6 +149,7 @@ def setup_kick(bot): # verify config settings for server logs.log('SpiceBot_Kick', "Checking for config settings") bot.config.define_section("SpiceBot_Kick", SpiceBot_Kick, validate=False) + botconfig.define_section("SpiceBot_Kick", SpiceBot_Kick, validate=False) def setup_gif(bot): From e7104f514b17a87901229cce5d2dd2e14929eee3 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 11:05:54 -0400 Subject: [PATCH 21/43] test --- sopel_modules/SpiceBot/Server.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index 6b292d6..cb03afe 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -10,7 +10,6 @@ from .Config import config as botconfig class BotServer(): """This Logs all server values of relevance'""" def __init__(self): - self.setup_isupport() self.linenumber = 0 self.dict = { "host_connect": botconfig.core.host, @@ -24,6 +23,16 @@ class BotServer(): }, } + def __getattr__(self, name): + ''' will only get called for undefined attributes ''' + """We will try to find a dict value, or return None""" + if name.lower() in list(self.dict.keys()): + return self.dict[str(name).lower()] + elif name.lower() in list(self.isupport.keys()): + return self.dict[str(name).lower()] + else: + raise Exception('Server dict does not contain a function or key ' + str(name.lower())) + def rpl_welcome(self, trigger): self.dict["host"] = str(trigger.sender).lower() From 8cbd2547f1dc7c3986266ffa552db04f46515887 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 11:06:49 -0400 Subject: [PATCH 22/43] oops --- sopel_modules/SpiceBot/osd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot/osd.py b/sopel_modules/SpiceBot/osd.py index daf447d..ca892f2 100644 --- a/sopel_modules/SpiceBot/osd.py +++ b/sopel_modules/SpiceBot/osd.py @@ -12,7 +12,7 @@ import time from collections import abc import sys -from .Server import config as botserver +from .Server import server as botserver class SpiceBot_OSD(StaticSection): From 24c6684bec0d830f1458c4e77fb419de7c4d2f8a Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 11:10:14 -0400 Subject: [PATCH 23/43] better test --- sopel_modules/SpiceBot_Core_Processing/Server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index f00601c..7bc9776 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -18,4 +18,4 @@ def server_name(bot, trigger): @sopel.module.rule('.*') def parse_event_005(bot, trigger): SpiceBot.server.parse_reply_isupport(trigger) - bot.osd(str(SpiceBot.server.isupport)) + bot.osd(str(SpiceBot.server.isupport), "#deathbybandaid") From e29b651a6d71a5102405d725989dbf96efb12791 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 11:14:43 -0400 Subject: [PATCH 24/43] test --- sopel_modules/SpiceBot_Core_Processing/Server.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index 7bc9776..c43fa67 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -18,4 +18,5 @@ def server_name(bot, trigger): @sopel.module.rule('.*') def parse_event_005(bot, trigger): SpiceBot.server.parse_reply_isupport(trigger) - bot.osd(str(SpiceBot.server.isupport), "#deathbybandaid") + for key in list(SpiceBot.server.isupport): + bot.osd([key, str(SpiceBot.server.isupport['key'])], "#deathbybandaid") From 21a28a15af97e985504b47fe55d7f83ec71be150 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 11:15:25 -0400 Subject: [PATCH 25/43] test --- sopel_modules/SpiceBot_Core_Processing/Server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index c43fa67..480b635 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -18,5 +18,5 @@ def server_name(bot, trigger): @sopel.module.rule('.*') def parse_event_005(bot, trigger): SpiceBot.server.parse_reply_isupport(trigger) - for key in list(SpiceBot.server.isupport): + for key in list(SpiceBot.server.isupport.keys()): bot.osd([key, str(SpiceBot.server.isupport['key'])], "#deathbybandaid") From 30176ca3c7cb1159fca7656e0223ce43e04dde32 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 11:16:16 -0400 Subject: [PATCH 26/43] test --- sopel_modules/SpiceBot_Core_Processing/Server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index 480b635..2bf7215 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -19,4 +19,4 @@ def server_name(bot, trigger): def parse_event_005(bot, trigger): SpiceBot.server.parse_reply_isupport(trigger) for key in list(SpiceBot.server.isupport.keys()): - bot.osd([key, str(SpiceBot.server.isupport['key'])], "#deathbybandaid") + bot.osd([key, str(SpiceBot.server.isupport[key])], "#deathbybandaid") From 01496d46200bd2908be02b937a462aaf0f929174 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 11:22:42 -0400 Subject: [PATCH 27/43] test --- sopel_modules/SpiceBot/Server.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index cb03afe..82f2274 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -54,27 +54,27 @@ class BotServer(): if ',' not in raw_value: if str(raw_value).isdigit(): setting_value = int(raw_value) - self.isupport[key] = raw_value + self.isupport[str(key)] = raw_value else: - if key not in list(self.isupport.keys()): - self.isupport[key] = {} + if str(key) not in list(self.isupport.keys()): + self.isupport[str(key)] = {} - if not isinstance(self.isupport[key], dict): - self.isupport[key] = {} + if not isinstance(self.isupport[str(key)], dict): + self.isupport[str(key)] = {} settings = str(raw_value).split(',') for setting in settings: if ":" not in setting: - self.isupport[key][setting] = None + self.isupport[str(key)][str(setting)] = None else: setting_name, setting_value = setting.split(":") if str(setting_value).isdigit(): setting_value = int(setting_value) - self.isupport[key][setting_name] = setting_value + self.isupport[str(key)][str(setting_name)] = setting_value server = BotServer() From b1a46527387429cb86c9b399b067d1f19cdc5159 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 11:26:56 -0400 Subject: [PATCH 28/43] test --- sopel_modules/SpiceBot_Core_Processing/Server.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index 2bf7215..d514054 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -18,5 +18,4 @@ def server_name(bot, trigger): @sopel.module.rule('.*') def parse_event_005(bot, trigger): SpiceBot.server.parse_reply_isupport(trigger) - for key in list(SpiceBot.server.isupport.keys()): - bot.osd([key, str(SpiceBot.server.isupport[key])], "#deathbybandaid") + bot.osd([key, str(SpiceBot.server.isupport["TARGMAX"])], "#deathbybandaid") From 06f24fa473acae54487095cb2fe6c68e55d69bdf Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 11:27:53 -0400 Subject: [PATCH 29/43] terst --- sopel_modules/SpiceBot_Core_Processing/Server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index d514054..b446ac1 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -18,4 +18,4 @@ def server_name(bot, trigger): @sopel.module.rule('.*') def parse_event_005(bot, trigger): SpiceBot.server.parse_reply_isupport(trigger) - bot.osd([key, str(SpiceBot.server.isupport["TARGMAX"])], "#deathbybandaid") + bot.osd([str(SpiceBot.server.isupport["TARGMAX"])], "#deathbybandaid") From 39f533d19174d47aa184712317cce663c7592bcd Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 11:28:42 -0400 Subject: [PATCH 30/43] test --- sopel_modules/SpiceBot/Server.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index 82f2274..2849412 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -23,16 +23,6 @@ class BotServer(): }, } - def __getattr__(self, name): - ''' will only get called for undefined attributes ''' - """We will try to find a dict value, or return None""" - if name.lower() in list(self.dict.keys()): - return self.dict[str(name).lower()] - elif name.lower() in list(self.isupport.keys()): - return self.dict[str(name).lower()] - else: - raise Exception('Server dict does not contain a function or key ' + str(name.lower())) - def rpl_welcome(self, trigger): self.dict["host"] = str(trigger.sender).lower() From 5de0805e65208cea0558acaa57db81a820d55956 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 11:30:27 -0400 Subject: [PATCH 31/43] test --- sopel_modules/SpiceBot/Server.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index 2849412..f759b6c 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -61,6 +61,10 @@ class BotServer(): else: setting_name, setting_value = setting.split(":") + try: + setting_value = str(setting).split(':')[1] or None + except IndexError: + setting_value = None if str(setting_value).isdigit(): setting_value = int(setting_value) From 83dc0e88f411cb5e28ff54bceffc2388cc294885 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 11:37:32 -0400 Subject: [PATCH 32/43] test done --- sopel_modules/SpiceBot/Server.py | 2 +- sopel_modules/SpiceBot_Core_Processing/Server.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index f759b6c..4bb322c 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -37,7 +37,7 @@ class BotServer(): # check for value associated with the parameter if '=' not in param: - self.isupport[param] = None + self.isupport[str(param)] = None else: key, raw_value = param.split('=') diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index b446ac1..c9678df 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -18,4 +18,3 @@ def server_name(bot, trigger): @sopel.module.rule('.*') def parse_event_005(bot, trigger): SpiceBot.server.parse_reply_isupport(trigger) - bot.osd([str(SpiceBot.server.isupport["TARGMAX"])], "#deathbybandaid") From ee0bf4f7bb4426ca7209b41f063eabaaf5c6e890 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 12:03:07 -0400 Subject: [PATCH 33/43] 004 --- sopel_modules/SpiceBot/Events.py | 1 + sopel_modules/SpiceBot_Core_Processing/Server.py | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/sopel_modules/SpiceBot/Events.py b/sopel_modules/SpiceBot/Events.py index 6b8afe4..a795e92 100644 --- a/sopel_modules/SpiceBot/Events.py +++ b/sopel_modules/SpiceBot/Events.py @@ -35,6 +35,7 @@ class BotEvents(object): def __init__(self): self.lock = threading.Lock() self.RPL_WELCOME = '001' # This is a defined IRC event + self.RPL_MYINFO = '004' # This is a defined IRC event self.RPL_ISUPPORT = '005' # This is a defined IRC event self.RPL_WHOREPLY = '352' # This is a defined IRC event self.RPL_NAMREPLY = '353' # This is a defined IRC event diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index c9678df..021d53c 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -18,3 +18,9 @@ def server_name(bot, trigger): @sopel.module.rule('.*') def parse_event_005(bot, trigger): SpiceBot.server.parse_reply_isupport(trigger) + + +@sopel.module.event(SpiceBot.events.RPL_MYINFO) +@sopel.module.rule('.*') +def parse_event_004(bot, trigger): + bot.osd(str(trigger), "#deathbybandaid") From 5c8da48003938d738f2e623cbeb68b6cd760e666 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 12:04:03 -0400 Subject: [PATCH 34/43] test --- sopel_modules/SpiceBot_Core_Processing/Server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index 021d53c..3c9ae50 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -23,4 +23,4 @@ def parse_event_005(bot, trigger): @sopel.module.event(SpiceBot.events.RPL_MYINFO) @sopel.module.rule('.*') def parse_event_004(bot, trigger): - bot.osd(str(trigger), "#deathbybandaid") + bot.osd(str(trigger.args), "#deathbybandaid") From 8c09c3ecb2174f31aebd30ffd1bedbca972d7c8e Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 12:12:43 -0400 Subject: [PATCH 35/43] test --- sopel_modules/SpiceBot/Server.py | 7 +++++++ sopel_modules/SpiceBot_Core_Processing/Server.py | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index 4bb322c..b50d268 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -22,10 +22,17 @@ class BotServer(): 'PRIVMSG': 1, }, } + self.myinfo = {} def rpl_welcome(self, trigger): self.dict["host"] = str(trigger.sender).lower() + def parse_reply_myinfo(self, trigger): + self.myinfo["servername"] = trigger.args[1] + self.myinfo["version"] = trigger.args[2] + self.myinfo["usermodes"] = list(trigger.args[3]) + self.myinfo["channelmodes"] = list(trigger.args[4]) + def parse_reply_isupport(self, trigger): # check against 005_Bounce diff --git a/sopel_modules/SpiceBot_Core_Processing/Server.py b/sopel_modules/SpiceBot_Core_Processing/Server.py index 3c9ae50..b5cb6ef 100644 --- a/sopel_modules/SpiceBot_Core_Processing/Server.py +++ b/sopel_modules/SpiceBot_Core_Processing/Server.py @@ -23,4 +23,4 @@ def parse_event_005(bot, trigger): @sopel.module.event(SpiceBot.events.RPL_MYINFO) @sopel.module.rule('.*') def parse_event_004(bot, trigger): - bot.osd(str(trigger.args), "#deathbybandaid") + SpiceBot.server.parse_reply_myinfo(trigger) From a6b6102619b696d788e0bc7ae7afd897630a4211 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 14:44:00 -0400 Subject: [PATCH 36/43] idea level --- sopel_modules/SpiceBot/Database.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sopel_modules/SpiceBot/Database.py b/sopel_modules/SpiceBot/Database.py index a3d4a24..0824655 100644 --- a/sopel_modules/SpiceBot/Database.py +++ b/sopel_modules/SpiceBot/Database.py @@ -80,6 +80,18 @@ class PluginValues(BASE): value = Column(Text()) +class ChannelNickValues(BASE): + """ + PluginValues SQLAlchemy Class + """ + __tablename__ = 'spice_plugin_values' + __table_args__ = MYSQL_TABLE_ARGS + plugin = Column(String(255), primary_key=True) + namespace = Column(String(255), primary_key=True) + key = Column(String(255), primary_key=True) + value = Column(Text()) + + class SpiceDB(object): # NICK FUNCTIONS From c5f2406e462c8298a5c99929cc98aab2c8de883c Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 4 Jul 2019 14:52:58 -0400 Subject: [PATCH 37/43] good idea, but meh --- sopel_modules/SpiceBot/Database.py | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/sopel_modules/SpiceBot/Database.py b/sopel_modules/SpiceBot/Database.py index 0824655..252e96f 100644 --- a/sopel_modules/SpiceBot/Database.py +++ b/sopel_modules/SpiceBot/Database.py @@ -80,18 +80,6 @@ class PluginValues(BASE): value = Column(Text()) -class ChannelNickValues(BASE): - """ - PluginValues SQLAlchemy Class - """ - __tablename__ = 'spice_plugin_values' - __table_args__ = MYSQL_TABLE_ARGS - plugin = Column(String(255), primary_key=True) - namespace = Column(String(255), primary_key=True) - key = Column(String(255), primary_key=True) - value = Column(Text()) - - class SpiceDB(object): # NICK FUNCTIONS @@ -660,8 +648,8 @@ class BotDatabase(): def adjust_plugin_value(self, plugin, key, value, namespace='default'): return self.db.adjust_plugin_value(plugin, key, value, namespace) - def adjust_plugin_list(self, nick, key, entries, adjustmentdirection, namespace='default'): - return self.db.adjust_plugin_list(nick, key, entries, adjustmentdirection, namespace) + def adjust_plugin_list(self, plugin, key, entries, adjustmentdirection, namespace='default'): + return self.db.adjust_plugin_list(plugin, key, entries, adjustmentdirection, namespace) db = BotDatabase() From 9f27ea2093c3915ae4e4af78652a72b4cba26d4f Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Fri, 5 Jul 2019 06:49:05 -0400 Subject: [PATCH 38/43] patch --- sopel_modules/SpiceBot/Users.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sopel_modules/SpiceBot/Users.py b/sopel_modules/SpiceBot/Users.py index c55c1e8..bd67ca7 100644 --- a/sopel_modules/SpiceBot/Users.py +++ b/sopel_modules/SpiceBot/Users.py @@ -65,6 +65,7 @@ class BotUsers(): except Exception as e: nick_id = e nick_id = None + return None if usercreate and nick_id: self.add_to_all(nick, nick_id) return int(nick_id) From 0581a1817a4790f55c9f1031bbf15b58a36db7e2 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Fri, 5 Jul 2019 07:49:23 -0400 Subject: [PATCH 39/43] add server database functionality --- sopel_modules/SpiceBot/Database.py | 172 ++++++++++++++++++++++++++++- 1 file changed, 170 insertions(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot/Database.py b/sopel_modules/SpiceBot/Database.py index 252e96f..5261db8 100644 --- a/sopel_modules/SpiceBot/Database.py +++ b/sopel_modules/SpiceBot/Database.py @@ -68,6 +68,18 @@ class ChannelValues(BASE): value = Column(Text()) +class ServerValues(BASE): + """ + ServerValues SQLAlchemy Class + """ + __tablename__ = 'spice_server_values' + __table_args__ = MYSQL_TABLE_ARGS + server = Column(String(255), primary_key=True) + namespace = Column(String(255), primary_key=True) + key = Column(String(255), primary_key=True) + value = Column(Text()) + + class PluginValues(BASE): """ PluginValues SQLAlchemy Class @@ -396,6 +408,138 @@ class SpiceDB(object): finally: session.close() + # SERVER FUNCTIONS + + def set_server_value(self, server, key, value, namespace='default'): + """Sets the value for a given key to be associated with the server.""" + value = json.dumps(value, ensure_ascii=False) + session = self.ssession() + try: + result = session.query(ServerValues) \ + .filter(ServerValues.server == server)\ + .filter(ServerValues.namespace == namespace)\ + .filter(ServerValues.key == key) \ + .one_or_none() + # ServerValue exists, update + if result: + result.value = value + session.commit() + # DNE - Insert + else: + new_servervalue = ServerValues(server=server, namespace=namespace, key=key, value=value) + session.add(new_servervalue) + session.commit() + except SQLAlchemyError: + session.rollback() + raise + finally: + session.close() + + def get_server_value(self, server, key, namespace='default'): + """Retrieves the value for a given key associated with a server.""" + session = self.ssession() + try: + result = session.query(ServerValues) \ + .filter(ServerValues.server == server)\ + .filter(ServerValues.namespace == namespace)\ + .filter(ServerValues.key == key) \ + .one_or_none() + if result is not None: + result = result.value + return _deserialize(result) + except SQLAlchemyError: + session.rollback() + raise + finally: + session.close() + + def delete_server_value(self, server, key, namespace='default'): + """Sets the value for a given key to be associated with the server.""" + session = self.ssession() + try: + result = session.query(ServerValues) \ + .filter(ServerValues.server == server)\ + .filter(ServerValues.namespace == namespace)\ + .filter(ServerValues.key == key) \ + .one_or_none() + # ServerValue exists, delete + if result: + session.delete(result) + session.commit() + except SQLAlchemyError: + session.rollback() + raise + finally: + session.close() + + def adjust_server_value(self, server, key, value, namespace='default'): + """Sets the value for a given key to be associated with the server.""" + value = json.dumps(value, ensure_ascii=False) + session = self.ssession() + try: + result = session.query(ServerValues) \ + .filter(ServerValues.server == server)\ + .filter(ServerValues.namespace == namespace)\ + .filter(ServerValues.key == key) \ + .one_or_none() + # ServerValue exists, update + if result: + result.value = float(result.value) + float(value) + session.commit() + # DNE - Insert + else: + new_servervalue = ServerValues(server=server, namespace=namespace, key=key, value=float(value)) + session.add(new_servervalue) + session.commit() + except SQLAlchemyError: + session.rollback() + raise + finally: + session.close() + + def adjust_server_list(self, server, key, entries, adjustmentdirection, namespace='default'): + """Sets the value for a given key to be associated with the server.""" + if not isinstance(entries, list): + entries = [entries] + entries = json.dumps(entries, ensure_ascii=False) + session = self.ssession() + try: + result = session.query(ServerValues) \ + .filter(ServerValues.server == server)\ + .filter(ServerValues.namespace == namespace)\ + .filter(ServerValues.key == key) \ + .one_or_none() + # ServerValue exists, update + if result: + if adjustmentdirection == 'add': + for entry in entries: + if entry not in result.value: + result.value.append(entry) + elif adjustmentdirection == 'del': + for entry in entries: + while entry in result.value: + result.value.remove(entry) + session.commit() + # DNE - Insert + else: + values = [] + if adjustmentdirection == 'add': + for entry in entries: + if entry not in values: + values.append(entry) + elif adjustmentdirection == 'del': + for entry in entries: + while entry in values: + values.remove(entry) + new_servervalue = ServerValues(server=server, namespace=namespace, key=key, value=values) + session.add(new_servervalue) + session.commit() + except SQLAlchemyError: + session.rollback() + raise + finally: + session.close() + # PLUGIN FUNCTIONS def set_plugin_value(self, plugin, key, value, namespace='default'): @@ -474,7 +618,7 @@ class SpiceDB(object): .filter(PluginValues.namespace == namespace)\ .filter(PluginValues.key == key) \ .one_or_none() - # ChannelValue exists, update + # PluginValue exists, update if result: result.value = float(result.value) + float(value) session.commit() @@ -502,7 +646,7 @@ class SpiceDB(object): .filter(PluginValues.namespace == namespace)\ .filter(PluginValues.key == key) \ .one_or_none() - # ChannelValue exists, update + # PluginValue exists, update if result: if adjustmentdirection == 'add': for entry in entries: @@ -557,6 +701,13 @@ class BotDatabase(): SopelDB.adjust_channel_value = SpiceDB.adjust_channel_value SopelDB.adjust_channel_list = SpiceDB.adjust_channel_list + sopel.db.ServerValues = ServerValues + SopelDB.get_server_value = SpiceDB.get_server_value + SopelDB.set_server_value = SpiceDB.set_server_value + SopelDB.delete_server_value = SpiceDB.delete_server_value + SopelDB.adjust_server_value = SpiceDB.adjust_server_value + SopelDB.adjust_server_list = SpiceDB.adjust_server_list + sopel.db.PluginValues = PluginValues SopelDB.get_plugin_value = SpiceDB.get_plugin_value SopelDB.set_plugin_value = SpiceDB.set_plugin_value @@ -634,6 +785,23 @@ class BotDatabase(): def adjust_channel_list(self, nick, key, entries, adjustmentdirection, namespace='default'): return self.db.adjust_channel_list(nick, key, entries, adjustmentdirection, namespace) + """Servers""" + + def get_server_value(self, _server, key, namespace='default'): + return self.db.get__server_value(_server, key, namespace) + + def set__server_value(self, _server, key, value, namespace='default'): + return self.db.set__server_value(_server, key, value, namespace) + + def delete__server_value(self, _server, key, namespace='default'): + return self.db.delete__server_value(_server, key, namespace) + + def adjust__server_value(self, _server, key, value, namespace='default'): + return self.db.adjust__server_value(_server, key, value, namespace) + + def adjust__server_list(self, nick, key, entries, adjustmentdirection, namespace='default'): + return self.db.adjust__server_list(nick, key, entries, adjustmentdirection, namespace) + """Plugins""" def get_plugin_value(self, plugin, key, namespace='default'): From a059d2981e7f28bf7590e0b03a3c162bfcbc4377 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Fri, 5 Jul 2019 08:17:32 -0400 Subject: [PATCH 40/43] update database --- sopel_modules/SpiceBot/Database.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/sopel_modules/SpiceBot/Database.py b/sopel_modules/SpiceBot/Database.py index 5261db8..8ede899 100644 --- a/sopel_modules/SpiceBot/Database.py +++ b/sopel_modules/SpiceBot/Database.py @@ -412,6 +412,7 @@ class SpiceDB(object): def set_server_value(self, server, key, value, namespace='default'): """Sets the value for a given key to be associated with the server.""" + server = server.lower() value = json.dumps(value, ensure_ascii=False) session = self.ssession() try: @@ -437,6 +438,7 @@ class SpiceDB(object): def get_server_value(self, server, key, namespace='default'): """Retrieves the value for a given key associated with a server.""" + server = server.lower() session = self.ssession() try: result = session.query(ServerValues) \ @@ -455,6 +457,7 @@ class SpiceDB(object): def delete_server_value(self, server, key, namespace='default'): """Sets the value for a given key to be associated with the server.""" + server = server.lower() session = self.ssession() try: result = session.query(ServerValues) \ @@ -474,6 +477,7 @@ class SpiceDB(object): def adjust_server_value(self, server, key, value, namespace='default'): """Sets the value for a given key to be associated with the server.""" + server = server.lower() value = json.dumps(value, ensure_ascii=False) session = self.ssession() try: @@ -499,6 +503,7 @@ class SpiceDB(object): def adjust_server_list(self, server, key, entries, adjustmentdirection, namespace='default'): """Sets the value for a given key to be associated with the server.""" + server = server.lower() if not isinstance(entries, list): entries = [entries] entries = json.dumps(entries, ensure_ascii=False) @@ -544,7 +549,7 @@ class SpiceDB(object): def set_plugin_value(self, plugin, key, value, namespace='default'): """Sets the value for a given key to be associated with the plugin.""" - plugin = Identifier(plugin).lower() + plugin = plugin.lower() value = json.dumps(value, ensure_ascii=False) session = self.ssession() try: @@ -570,7 +575,7 @@ class SpiceDB(object): def get_plugin_value(self, plugin, key, namespace='default'): """Retrieves the value for a given key associated with a plugin.""" - plugin = Identifier(plugin).lower() + plugin = plugin.lower() session = self.ssession() try: result = session.query(PluginValues) \ @@ -589,7 +594,7 @@ class SpiceDB(object): def delete_plugin_value(self, plugin, key, namespace='default'): """Deletes the value for a given key to be associated with the plugin.""" - plugin = Identifier(plugin).lower() + plugin = plugin.lower() session = self.ssession() try: result = session.query(PluginValues) \ @@ -609,7 +614,7 @@ class SpiceDB(object): def adjust_plugin_value(self, plugin, key, value, namespace='default'): """Sets the value for a given key to be associated with the plugin.""" - plugin = Identifier(plugin).lower() + plugin = plugin.lower() value = json.dumps(value, ensure_ascii=False) session = self.ssession() try: @@ -635,7 +640,7 @@ class SpiceDB(object): def adjust_plugin_list(self, plugin, key, entries, adjustmentdirection, namespace='default'): """Sets the value for a given key to be associated with the plugin.""" - plugin = Identifier(plugin).lower() + plugin = plugin.lower() if not isinstance(entries, list): entries = [entries] entries = json.dumps(entries, ensure_ascii=False) From e074d779d3e93f8f36e01e9321f55042e2874bfc Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Fri, 5 Jul 2019 08:35:33 -0400 Subject: [PATCH 41/43] server command --- sopel_modules/SpiceBot/Server.py | 8 +++++++- sopel_modules/SpiceBot_Core_Commands/Server.py | 18 ++++++++++++++++++ .../SpiceBot_Core_Commands/__init__.py | 1 + 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 sopel_modules/SpiceBot_Core_Commands/Server.py diff --git a/sopel_modules/SpiceBot/Server.py b/sopel_modules/SpiceBot/Server.py index b50d268..3502294 100644 --- a/sopel_modules/SpiceBot/Server.py +++ b/sopel_modules/SpiceBot/Server.py @@ -16,13 +16,19 @@ class BotServer(): "host": botconfig.core.host, } self.isupport = { + "NETWORK": botconfig.core.host, "TARGMAX": { "KICK": 1, 'NOTICE': 1, 'PRIVMSG': 1, }, } - self.myinfo = {} + self.myinfo = { + "servername": botconfig.core.host, + "version": None, + "usermodes": [], + "channelmodes": [] + } def rpl_welcome(self, trigger): self.dict["host"] = str(trigger.sender).lower() diff --git a/sopel_modules/SpiceBot_Core_Commands/Server.py b/sopel_modules/SpiceBot_Core_Commands/Server.py new file mode 100644 index 0000000..82dc043 --- /dev/null +++ b/sopel_modules/SpiceBot_Core_Commands/Server.py @@ -0,0 +1,18 @@ +# coding=utf8 +from __future__ import unicode_literals, absolute_import, division, print_function +""" +This is the SpiceBot Users system. +""" +import sopel + +import sopel_modules.SpiceBot as SpiceBot + + +@SpiceBot.prerun('nickname') +@sopel.module.nickname_commands('server') +def nickname_comand_users(bot, trigger, botcom): + network = SpiceBot.server.isupport["NETWORK"] + server = SpiceBot.server.myinfo["servername"] + version = SpiceBot.server.myinfo["version"] + bot.say("I am connected to " + str(server) + " on the " + str(network) + " network. This server runs " + str(version)) + return diff --git a/sopel_modules/SpiceBot_Core_Commands/__init__.py b/sopel_modules/SpiceBot_Core_Commands/__init__.py index 128d453..bcdf439 100644 --- a/sopel_modules/SpiceBot_Core_Commands/__init__.py +++ b/sopel_modules/SpiceBot_Core_Commands/__init__.py @@ -9,6 +9,7 @@ This module contains references only for other modules to utilize. from .CommandsQuery import * from .Commands import * +from .Server import * from .Channels import * from .Users import * from .Database import * From 674f386a939954277f5f052b61ba60c8e105ee9a Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Fri, 5 Jul 2019 08:37:16 -0400 Subject: [PATCH 42/43] fix --- sopel_modules/SpiceBot_Core_Commands/Server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sopel_modules/SpiceBot_Core_Commands/Server.py b/sopel_modules/SpiceBot_Core_Commands/Server.py index 82dc043..273b062 100644 --- a/sopel_modules/SpiceBot_Core_Commands/Server.py +++ b/sopel_modules/SpiceBot_Core_Commands/Server.py @@ -10,7 +10,7 @@ import sopel_modules.SpiceBot as SpiceBot @SpiceBot.prerun('nickname') @sopel.module.nickname_commands('server') -def nickname_comand_users(bot, trigger, botcom): +def nickname_comand_server(bot, trigger, botcom): network = SpiceBot.server.isupport["NETWORK"] server = SpiceBot.server.myinfo["servername"] version = SpiceBot.server.myinfo["version"] From 2ff44e3e67a893661f5607cdee87649246b9cacb Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Fri, 5 Jul 2019 08:39:03 -0400 Subject: [PATCH 43/43] cleaner --- sopel_modules/SpiceBot_Core_Commands/Server.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sopel_modules/SpiceBot_Core_Commands/Server.py b/sopel_modules/SpiceBot_Core_Commands/Server.py index 273b062..484892d 100644 --- a/sopel_modules/SpiceBot_Core_Commands/Server.py +++ b/sopel_modules/SpiceBot_Core_Commands/Server.py @@ -14,5 +14,4 @@ def nickname_comand_server(bot, trigger, botcom): network = SpiceBot.server.isupport["NETWORK"] server = SpiceBot.server.myinfo["servername"] version = SpiceBot.server.myinfo["version"] - bot.say("I am connected to " + str(server) + " on the " + str(network) + " network. This server runs " + str(version)) - return + bot.osd("I am connected to " + str(server) + " on the " + str(network) + " network. This server runs " + str(version))