diff --git a/sopel_modules/SpiceBot_Logs/Logs.py b/sopel_modules/SpiceBot_Logs/Logs.py new file mode 100644 index 0000000..0e8d6be --- /dev/null +++ b/sopel_modules/SpiceBot_Logs/Logs.py @@ -0,0 +1,57 @@ +# coding=utf-8 + +from __future__ import unicode_literals, absolute_import, division, print_function + +import sopel.module +from sopel.tools import stderr + +import spicemanip + +from sopel_modules.SpiceBot_SBTools import sopel_triggerargs, command_permissions_check, inlist, inlist_match + + +def configure(config): + pass + + +def setup(bot): + stderr("[SpiceBot_Logs] Starting Setup Procedure") + bot.memory['SpiceBot_Logs'] = {} + + +@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), trigger.sender, 'action') + + +def bot_logging(bot, logtype, logentry): + + if 'SpiceBot_Logs' not in bot.memory: + bot.memory['SpiceBot_Logs'] = {} + + 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] diff --git a/sopel_modules/SpiceBot_Logs/__init__.py b/sopel_modules/SpiceBot_Logs/__init__.py new file mode 100644 index 0000000..f9d038a --- /dev/null +++ b/sopel_modules/SpiceBot_Logs/__init__.py @@ -0,0 +1,8 @@ +# coding=utf8 +from __future__ import unicode_literals, absolute_import, division, print_function + +from .Logs import * + +__author__ = 'Sam Zick' +__email__ = 'sam@deathbybandaid.net' +__version__ = '0.1.1' diff --git a/sopel_modules/SpiceBot_SBTools/__init__.py b/sopel_modules/SpiceBot_SBTools/__init__.py index 39bbc8b..4c3d6f9 100644 --- a/sopel_modules/SpiceBot_SBTools/__init__.py +++ b/sopel_modules/SpiceBot_SBTools/__init__.py @@ -111,6 +111,26 @@ def inlist(bot, searchterm, searchlist): return False +def inlist_match(bot, searchterm, searchlist): + # verify we are searching a list + if isinstance(searchlist, collections.abc.KeysView) or isinstance(searchlist, dict): + searchlist = [x for x in searchlist] + if not isinstance(searchlist, list): + searchlist = [searchlist] + rebuildlist = [] + for searchitem in searchlist: + rebuildlist.append(str(searchitem)) + + searchterm = str(searchterm) + if searchterm in rebuildlist: + return searchterm + else: + for searching in rebuildlist: + if searching.lower() == searchterm.lower(): + return searching + return searchterm + + """Channel Functions"""