diff --git a/sopel_modules/SpiceBot/AI.py b/sopel_modules/SpiceBot/AI.py index 2ca5934..21144cd 100644 --- a/sopel_modules/SpiceBot/AI.py +++ b/sopel_modules/SpiceBot/AI.py @@ -12,6 +12,7 @@ import tempfile import aiml from .Database import db as botdb +from .Config import config as botconfig class SpiceBot_AI_MainSection(StaticSection): @@ -38,8 +39,14 @@ class SpiceBot_AI(): self.aiml_kernel._verboseMode = False # Learn responses + self.load_saved_brain() self.load_brain() + def load_saved_brain(self): + if os.path.isfile(botconfig.config.aibrain): + self.aiml_kernel.bootstrap(brainFile=botconfig.config.aibrain) + self.save_brain() + def load_brain(self): import sopel_modules braindirs = [] @@ -50,6 +57,7 @@ class SpiceBot_AI(): # learn directories self.learn(braindirs) + self.save_brain() def load_bot_values(self, bot): self.aiml_kernel.setBotPredicate("nick", bot.nick) @@ -57,6 +65,7 @@ class SpiceBot_AI(): def load_extras(self, bot): if len(bot.config.SpiceBot_AI.extra): self.learn(self, bot.config.SpiceBot_AI.extra) + self.save_brain() def learn(self, braindirs): for braindir in braindirs: @@ -79,13 +88,18 @@ class SpiceBot_AI(): self.aiml_kernel.respond("LOAD AIML B") def on_message(self, bot, trigger, message): + nick = Identifier(trigger.nick) nick_id = botdb.get_nick_id(nick, create=True) self.check_user_import(nick, nick_id) + message = self.bot_message_precipher(bot, trigger, message) aiml_response = self.aiml_kernel.respond(message, nick_id) - self.save_nick_session(nick, nick_id) aiml_response = self.bot_message_decipher(bot, trigger, aiml_response) + + self.save_nick_session(nick, nick_id) + self.save_brain() + return aiml_response def bot_message_precipher(self, bot, trigger, message): @@ -128,5 +142,8 @@ class SpiceBot_AI(): sessionData = self.aiml_kernel.getSessionData(nick_id) botdb.set_nick_value(nick, 'botai', sessionData) + def save_brain(self): + self.aiml_kernel.saveBrain(botconfig.config.aibrain) + botai = SpiceBot_AI() diff --git a/sopel_modules/SpiceBot/Config.py b/sopel_modules/SpiceBot/Config.py index 3f0bcbf..4d535d8 100644 --- a/sopel_modules/SpiceBot/Config.py +++ b/sopel_modules/SpiceBot/Config.py @@ -35,6 +35,8 @@ class BotConfig(): self.config.core.logs_raw = os.path.join(self.config.core.logdir, 'raw.log') # self.config.core.logs_raw = os.path.os.path.join(self.config.core.logdir, self.config.basename + '.raw.log') + self.config.aibrain = os.path.join(self.config.homedir, self.config.basename + '.aibrain.brn') + # load as dict config = configparser.ConfigParser() config.read(self.config.filename) diff --git a/sopel_modules/SpiceBot/setup.py b/sopel_modules/SpiceBot/setup.py index 2a57052..8dcc54d 100644 --- a/sopel_modules/SpiceBot/setup.py +++ b/sopel_modules/SpiceBot/setup.py @@ -59,6 +59,8 @@ def setup(bot): bot.config.core.logs_raw = os.path.join(bot.config.core.logdir, 'raw.log') # bot.config.core.logs_raw = os.path.os.path.join(bot.config.core.logdir, bot.config.basename + '.raw.log') + bot.config.aibrain = os.path.join(bot.config.homedir, bot.config.basename + '.aibrain.brn') + logs.log('SpiceBot_Channels', "Setting Up Configuration") events.startup_add([events.BOT_CHANNELS]) bot.config.define_section("SpiceBot_Channels", SpiceBot_Channels_MainSection, validate=False) diff --git a/sopel_modules/SpiceBot/shutdown.py b/sopel_modules/SpiceBot/shutdown.py index d664695..091b615 100644 --- a/sopel_modules/SpiceBot/shutdown.py +++ b/sopel_modules/SpiceBot/shutdown.py @@ -6,4 +6,5 @@ from .AI import botai def shutdown(bot): - pass + + botai.save_brain()