From 8b410b51f7a38be1da60df136bc3b3fa768a3974 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 23 Sep 2019 12:09:37 -0400 Subject: [PATCH 1/3] test --- sopel_modules/SpiceBot/ReleaseNotes.py | 53 +++++++++++++++++++ sopel_modules/SpiceBot/__init__.py | 1 + .../SpiceBot_Release_Notes/Core.txt | 1 + .../SpiceBot_Core_Commands/ReleaseNotes.py | 21 ++++++++ .../SpiceBot_Core_Commands/__init__.py | 1 + 5 files changed, 77 insertions(+) create mode 100644 sopel_modules/SpiceBot/ReleaseNotes.py create mode 100644 sopel_modules/SpiceBot_Configs/SpiceBot_Release_Notes/Core.txt create mode 100644 sopel_modules/SpiceBot_Core_Commands/ReleaseNotes.py diff --git a/sopel_modules/SpiceBot/ReleaseNotes.py b/sopel_modules/SpiceBot/ReleaseNotes.py new file mode 100644 index 0000000..537df79 --- /dev/null +++ b/sopel_modules/SpiceBot/ReleaseNotes.py @@ -0,0 +1,53 @@ +# coding=utf8 +from __future__ import unicode_literals, absolute_import, division, print_function +"""This is a method to read files, online and local, and cache them""" + +import os + +from .Read import read as botread +from .Database import db as botdb + + +class BotNotes(): + + def __init__(self): + self.notes = botdb.get_plugin_value('SpiceBot_Release_Notes', 'notes') or dict() + self.dir_to_scan = botread.get_config_dirs("SpiceBot_Release_Notes") + self.load_txt_files(self.dir_to_scan) + self.save_notes() + + def save_notes(self): + savenotes = {} + for notefile in list(self.notes.keys()): + savenotes[notefile] = {"old": self.notes[notefile]["old"]} + botdb.set_plugin_value('SpiceBot_Release_Notes', 'notes', savenotes) + + def load_txt_files(self, dir_to_scan): + # iterate over files within + for directory in dir_to_scan: + for file in os.listdir(directory): + filepath = os.path.join(directory, file) + filepath = os.path.join(directory, file) + if os.path.isfile(filepath) and filepath.endswith('.txt'): + # gather file stats + slashsplit = str(filepath).split("/") + filename = slashsplit[-1] + filename_base = str(os.path.basename(filename).rsplit('.', 1)[0]).lower() + + if filename_base not in list(self.notes.keys()): + self.notes[filename_base] = {} + if "old" not in list(self.notes[filename_base].keys()): + self.notes[filename_base]["old"] = [] + if "new" not in list(self.notes[filename_base].keys()): + self.notes[filename_base]["new"] = [] + + text_file = open(filepath, 'r') + lines = text_file.readlines() + for line in lines: + if str(line) not in self.notes[filename_base]["old"]: + self.notes[filename_base]["new"].append(str(line)) + self.notes[filename_base]["old"].append(str(line)) + text_file.close() + + +releasenotes = BotNotes() diff --git a/sopel_modules/SpiceBot/__init__.py b/sopel_modules/SpiceBot/__init__.py index f1da22e..90f1629 100644 --- a/sopel_modules/SpiceBot/__init__.py +++ b/sopel_modules/SpiceBot/__init__.py @@ -39,6 +39,7 @@ from .Read import * from .Translate import * from .Version import * from .RegNicks import * +from .ReleaseNotes import * __author__ = 'Sam Zick' diff --git a/sopel_modules/SpiceBot_Configs/SpiceBot_Release_Notes/Core.txt b/sopel_modules/SpiceBot_Configs/SpiceBot_Release_Notes/Core.txt new file mode 100644 index 0000000..77d0aba --- /dev/null +++ b/sopel_modules/SpiceBot_Configs/SpiceBot_Release_Notes/Core.txt @@ -0,0 +1 @@ +First release of Release Notes diff --git a/sopel_modules/SpiceBot_Core_Commands/ReleaseNotes.py b/sopel_modules/SpiceBot_Core_Commands/ReleaseNotes.py new file mode 100644 index 0000000..877e0dd --- /dev/null +++ b/sopel_modules/SpiceBot_Core_Commands/ReleaseNotes.py @@ -0,0 +1,21 @@ +# coding=utf8 +from __future__ import unicode_literals, absolute_import, division, print_function +""" +This is the SpiceBot Users system. +""" +import sopel + +import sopel_modules.SpiceBot as SpiceBot +from sopel_modules.spicemanip import spicemanip + + +@SpiceBot.prerun('nickname') +@sopel.module.nickname_commands('releasenotes') +def nickname_comand_releasenotes(bot, trigger, botcom): + newnotes = False + for notefile in list(SpiceBot.releasenotes.notes.keys()): + if len(SpiceBot.releasenotes.notes[notefile]["new"]): + bot.osd(["[" + str(notefile) + "]", spicemanip(SpiceBot.releasenotes.notes[notefile]["new"], 'andlist')]) + newnotes = True + if not newnotes: + bot.osd("This bot restart contains no new release notes.") diff --git a/sopel_modules/SpiceBot_Core_Commands/__init__.py b/sopel_modules/SpiceBot_Core_Commands/__init__.py index fbf890c..5e46660 100644 --- a/sopel_modules/SpiceBot_Core_Commands/__init__.py +++ b/sopel_modules/SpiceBot_Core_Commands/__init__.py @@ -24,6 +24,7 @@ from .DictComs import * from .TODO import * from .Version import * from .RegNicks import * +from .ReleaseNotes import * __author__ = 'Sam Zick' __email__ = 'sam@deathbybandaid.net' From 4cf4f5ceee8b888638f08814ca2d0405a64d0d24 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 23 Sep 2019 12:17:32 -0400 Subject: [PATCH 2/3] release notes test --- sopel_modules/SpiceBot/setup.py | 1 + .../SpiceBot_Core_Processing/StartupMonologue.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/sopel_modules/SpiceBot/setup.py b/sopel_modules/SpiceBot/setup.py index fe8c5ff..e94ed72 100644 --- a/sopel_modules/SpiceBot/setup.py +++ b/sopel_modules/SpiceBot/setup.py @@ -107,6 +107,7 @@ def setup_startupmonologue(bot): botevents.BOT_STARTUPMONOLOGUE_COMMANDS, botevents.BOT_STARTUPMONOLOGUE_AI, botevents.BOT_STARTUPMONOLOGUE_VERSION, + botevents.BOT_STARTUPMONOLOGUE_RNOTES, ]) diff --git a/sopel_modules/SpiceBot_Core_Processing/StartupMonologue.py b/sopel_modules/SpiceBot_Core_Processing/StartupMonologue.py index 6000cd0..58a65d6 100644 --- a/sopel_modules/SpiceBot_Core_Processing/StartupMonologue.py +++ b/sopel_modules/SpiceBot_Core_Processing/StartupMonologue.py @@ -67,6 +67,20 @@ def bot_startup_monologue_ai(bot, trigger): SpiceBot.events.trigger(bot, SpiceBot.events.BOT_STARTUPMONOLOGUE_AI, "SpiceBot_StartupMonologue") +@sopel.module.event(SpiceBot.events.BOT_READY) +@sopel.module.rule('.*') +def bot_startup_monologue_releasenotes(bot, trigger): + newnotes = False + for notefile in list(SpiceBot.releasenotes.notes.keys()): + if len(SpiceBot.releasenotes.notes[notefile]["new"]): + newnotes = True + if newnotes: + displayval = "Check Release Notes for News" + SpiceBot.startupmonologue.dict["releasenotes"] = displayval + SpiceBot.logs.log('SpiceBot_StartupMonologue', displayval) + SpiceBot.events.trigger(bot, SpiceBot.events.BOT_STARTUPMONOLOGUE_RNOTES, "SpiceBot_StartupMonologue") + + @sopel.module.event(SpiceBot.events.BOT_LOADED) @sopel.module.rule('.*') def bot_startup_monologue_display(bot, trigger): From 92dab6b4cdf7acf2d2ac3aac295c730a35f91b95 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Mon, 23 Sep 2019 12:18:43 -0400 Subject: [PATCH 3/3] push a release note --- sopel_modules/SpiceBot_Configs/SpiceBot_Release_Notes/Search.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 sopel_modules/SpiceBot_Configs/SpiceBot_Release_Notes/Search.txt diff --git a/sopel_modules/SpiceBot_Configs/SpiceBot_Release_Notes/Search.txt b/sopel_modules/SpiceBot_Configs/SpiceBot_Release_Notes/Search.txt new file mode 100644 index 0000000..8d83a20 --- /dev/null +++ b/sopel_modules/SpiceBot_Configs/SpiceBot_Release_Notes/Search.txt @@ -0,0 +1 @@ +Search API can extend to Urban dictionary