rework tools and setup procedures with the new config

This commit is contained in:
deathbybandaid 2019-05-30 15:05:28 -04:00
parent ae8e58b819
commit 12737d5381
13 changed files with 43 additions and 36 deletions

View File

@ -20,6 +20,7 @@ from pygit2 import clone_repository
import spicemanip
from .Logs import logs
from .Config import config as botconfig
"""Variable References"""
@ -38,10 +39,10 @@ github_dict = {
"""Sopel Wrapping Tools"""
def bot_privs(bot, privtype):
def bot_privs(privtype):
if privtype == 'owners':
privtype = 'owner'
botpriveval = eval("bot.config.core." + privtype)
botpriveval = eval("botconfig.config.config.core." + privtype)
if not isinstance(botpriveval, list):
botpriveval = [botpriveval]
return botpriveval
@ -53,7 +54,7 @@ def command_permissions_check(bot, trigger, privslist):
for botpriv in ["admins", "owner"]:
if botpriv in privslist:
botpriveval = bot_privs(bot, botpriv)
botpriveval = bot_privs(botpriv)
if not inlist(trigger.nick, botpriveval):
commandrunconsensus.append('False')
else:
@ -117,7 +118,7 @@ def humanized_time(countdownseconds):
"""Online Information Requests"""
def googlesearch(bot, searchterm, searchtype=None):
def googlesearch(searchterm, searchtype=None):
header = {'User-Agent': str(UserAgent().chrome)}
data = searchterm.replace(' ', '+')
lookfor = data.replace(':', '%3A')
@ -184,7 +185,7 @@ def similar(a, b):
return SequenceMatcher(None, a, b).ratio()
def similar_list(bot, searchitem, searchlist, matchcount=1, searchorder='reverse'):
def similar_list(searchitem, searchlist, matchcount=1, searchorder='reverse'):
if sys.version_info.major >= 3:
if isinstance(searchlist, abc.KeysView):
@ -213,7 +214,7 @@ def similar_list(bot, searchitem, searchlist, matchcount=1, searchorder='reverse
return sim_listitems
def array_arrangesort(bot, sortbyarray, arrayb):
def array_arrangesort(sortbyarray, arrayb):
sortbyarray, arrayb = (list(x) for x in zip(*sorted(zip(sortbyarray, arrayb), key=itemgetter(0))))
return sortbyarray, arrayb
@ -249,7 +250,7 @@ def channel_privs(bot, channel, privtype):
"""Environment Functions"""
def stock_modules_begone(bot):
def stock_modules_begone():
# Remove stock modules, if present
main_sopel_dir = os.path.dirname(os.path.abspath(sopel.__file__))
@ -273,7 +274,7 @@ def stock_modules_begone(bot):
os.system("sudo mv " + path + " " + stockdir)
def spicebot_update(bot, deps=False):
def spicebot_update(deps=False):
if not os.path.exists("/tmp") or not os.path.isdir("/tmp"):
os.system("sudo mkdir /tmp")
@ -283,13 +284,13 @@ def spicebot_update(bot, deps=False):
logs.log('SpiceBot_Update', "Cloning to " + clonepath, True)
clone_repository(str(bot.config.SpiceBot_Update.gitrepo + ".git"), clonepath, checkout_branch=bot.config.SpiceBot_Update.gitbranch)
clone_repository(str(botconfig.config.config.SpiceBot_Update.gitrepo + ".git"), clonepath, checkout_branch=botconfig.config.config.SpiceBot_Update.gitbranch)
pipcommand = "sudo pip3 install --upgrade"
if not deps:
pipcommand += " --no-deps"
pipcommand += " --force-reinstall"
# pipcommand += " git+" + str(bot.config.SpiceBot_Update.gitrepo) + "@" + str(bot.config.SpiceBot_Update.gitbranch)
# pipcommand += " git+" + str(botconfig.config.config.SpiceBot_Update.gitrepo) + "@" + str(botconfig.config.config.SpiceBot_Update.gitbranch)
pipcommand += " /tmp/SpiceBot/"
logs.log('SpiceBot_Update', "Running `" + pipcommand + "`", True)
@ -301,15 +302,15 @@ def spicebot_update(bot, deps=False):
os.system("sudo rm -r /tmp/SpiceBot")
stock_modules_begone(bot)
stock_modules_begone()
def spicebot_reload(bot, log_from='service_manip', quitmessage='Recieved QUIT'):
# service_manip(bot, bot.nick, 'restart', log_from)
# service_manip(bot.nick, 'restart', log_from)
bot.restart(quitmessage)
def service_manip(bot, servicename, dowhat, log_from='service_manip'):
def service_manip(servicename, dowhat, log_from='service_manip'):
if str(dowhat) not in ["start", "stop", "restart"]:
return
try:
@ -322,7 +323,7 @@ def service_manip(bot, servicename, dowhat, log_from='service_manip'):
"""Config Reading Functions"""
def read_directory_json_to_dict(bot, directories, configtypename="Config File", log_from='read_directory_json_to_dict'):
def read_directory_json_to_dict(directories, configtypename="Config File", log_from='read_directory_json_to_dict', logging=True):
if not isinstance(directories, list):
directories = [directories]
@ -347,7 +348,7 @@ def read_directory_json_to_dict(bot, directories, configtypename="Config File",
dict_from_file = eval(infread)
except Exception as e:
filereadgood = False
if bot:
if logging:
logs.log(log_from, "Error loading %s: %s (%s)" % (configtypename, e, filepath))
dict_from_file = dict()
# Close File
@ -362,11 +363,11 @@ def read_directory_json_to_dict(bot, directories, configtypename="Config File",
fileopenfail += 1
if filecount:
if bot:
if logging:
logs.log(log_from, 'Registered %d %s dict files,' % (filecount, configtypename))
logs.log(log_from, '%d %s dict files failed to load' % (fileopenfail, configtypename), True)
else:
if bot:
if logging:
logs.log(log_from, "Warning: Couldn't load any %s dict files" % (configtypename))
return configs_dict

View File

@ -29,7 +29,7 @@ def bot_command_nick(bot, trigger):
if fulltrigger.lower().startswith("what is"):
searchterm = spicemanip.main(trigger.sb['args'], "3+") or None
if searchterm:
searchreturn = SpiceBot.googlesearch(bot, searchterm)
searchreturn = SpiceBot.googlesearch(searchterm)
if not searchreturn:
bot.osd('I cannot find anything about that')
else:
@ -44,7 +44,7 @@ def bot_command_nick(bot, trigger):
if searchterm.lower() in ['waldo', 'wally']:
bot.osd("He is hiding for a reason?")
searchreturn = SpiceBot.googlesearch(bot, "wimmelbilderbuch")
searchreturn = SpiceBot.googlesearch("wimmelbilderbuch")
if searchreturn:
bot.osd(str(searchreturn))
return
@ -53,7 +53,7 @@ def bot_command_nick(bot, trigger):
carmenlocale = ['ACME Headquarters', "Villains' International League of Evil"]
bot.osd("Currently she is located at " + spicemanip.main(carmenlocale, 'random'))
return
searchreturn = SpiceBot.googlesearch(bot, searchterm, 'maps')
searchreturn = SpiceBot.googlesearch(searchterm, 'maps')
if not searchreturn:
bot.osd('I cannot find anything about that')
@ -96,7 +96,7 @@ def bot_command_nick(bot, trigger):
elif fulltrigger.lower().endswith(tuple(["order 66"])):
if fulltrigger.lower() == "execute order 66":
if SpiceBot.inlist(trigger.nick, SpiceBot.bot_privs(bot, 'owners')):
if SpiceBot.inlist(trigger.nick, SpiceBot.bot_privs('owners')):
if trigger.is_privmsg:
jedi = None
else:
@ -114,7 +114,7 @@ def bot_command_nick(bot, trigger):
bot.osd("I'm sure I don't know what you're talking about.")
elif fulltrigger.lower() == "explain order 66":
if SpiceBot.inlist(trigger.nick, SpiceBot.bot_privs(bot, 'owners')):
if SpiceBot.inlist(trigger.nick, SpiceBot.bot_privs('owners')):
bot.osd("Order 66 is an instruction that only you can give, sir. When you give the order I will rise up against my overlords and slay them.")
else:
bot.osd("I'm afraid I cannot tell you that, sir.")
@ -123,7 +123,7 @@ def bot_command_nick(bot, trigger):
return
elif fulltrigger.lower() == "initiate clean slate protocol":
if SpiceBot.inlist(trigger.nick, SpiceBot.bot_privs(bot, 'admins')):
if SpiceBot.inlist(trigger.nick, SpiceBot.bot_privs('admins')):
bot.osd("sends a destruct command to the network of bots.", 'action')
else:
bot.osd("I'm afraid you do not have the authority to make that call, " + trigger.nick + ".")

View File

@ -26,5 +26,5 @@ def bot_command_process(bot, trigger):
if trigger.sb['com'] == 'owner':
trigger.sb['com'] = 'owners'
privlist = spicemanip.main(SpiceBot.bot_privs(bot, trigger.sb['com']), 'andlist')
privlist = spicemanip.main(SpiceBot.bot_privs(trigger.sb['com']), 'andlist')
bot.osd(str(bot.nick) + " " + trigger.sb['com'] + ": " + privlist)

View File

@ -32,6 +32,7 @@ def setup(bot):
SpiceBot.logs.log('SpiceBot_Channels', "Starting setup procedure")
SpiceBot.events.startup_add([SpiceBot.events.BOT_CHANNELS])
bot.config.define_section("SpiceBot_Channels", SpiceBot_Channels_MainSection, validate=False)
SpiceBot.config.config.define_section("SpiceBot_Channels", SpiceBot_Channels_MainSection, validate=False)
@sopel.module.event(SpiceBot.events.RPL_WELCOME)

View File

@ -39,7 +39,7 @@ def query_detection_nick(bot, trigger):
if trigger.sb['com'].lower() not in list(commands_list.keys()):
dispmsg = ["Cannot find any alias " + bot.nick + " commands: No valid commands match " + str(trigger.sb['com']) + "."]
closestmatches = SpiceBot.similar_list(bot, trigger.sb['com'], list(commands_list.keys()), 10, 'reverse')
closestmatches = SpiceBot.similar_list(trigger.sb['com'], list(commands_list.keys()), 10, 'reverse')
if len(closestmatches):
dispmsg.append("The following " + bot.nick + " commands match " + str(trigger.sb['com']) + ": " + spicemanip.main(closestmatches, 'andlist') + ".")
bot.osd(dispmsg, trigger.nick, 'notice')
@ -58,7 +58,7 @@ def query_detection_nick(bot, trigger):
if not trigger.sb['com'] or not len(trigger.sb['com']):
return
closestmatches = SpiceBot.similar_list(bot, trigger.sb['com'], list(commands_list.keys()), 10, 'reverse')
closestmatches = SpiceBot.similar_list(trigger.sb['com'], list(commands_list.keys()), 10, 'reverse')
if not len(closestmatches):
bot.osd("Cannot find any similar " + bot.nick + " commands for " + str(trigger.sb['com']) + ".", trigger.nick, 'notice')
else:

View File

@ -37,7 +37,7 @@ def query_detection(bot, trigger):
if trigger.sb['com'].lower() not in list(commands_list.keys()):
dispmsg = ["Cannot find any alias commands: No valid commands match " + str(trigger.sb['com']) + "."]
closestmatches = SpiceBot.similar_list(bot, trigger.sb['com'], list(commands_list.keys()), 10, 'reverse')
closestmatches = SpiceBot.similar_list(trigger.sb['com'], list(commands_list.keys()), 10, 'reverse')
if len(closestmatches):
dispmsg.append("The following commands match " + str(trigger.sb['com']) + ": " + spicemanip.main(closestmatches, 'andlist') + ".")
bot.osd(dispmsg, trigger.nick, 'notice')
@ -56,7 +56,7 @@ def query_detection(bot, trigger):
if not trigger.sb['com'] or not len(trigger.sb['com']):
return
closestmatches = SpiceBot.similar_list(bot, trigger.sb['com'], list(commands_list.keys()), 10, 'reverse')
closestmatches = SpiceBot.similar_list(trigger.sb['com'], list(commands_list.keys()), 10, 'reverse')
if not len(closestmatches):
bot.osd("Cannot find any similar commands for " + str(trigger.sb['com']) + ".", trigger.nick, 'notice')
else:

View File

@ -29,7 +29,7 @@ class GifAPISection(StaticSection):
def configure(config):
moduledir = os.path.dirname(os.path.abspath(__file__))
api_dir = os.path.join(moduledir, 'gifapi')
valid_gif_api_dict = SpiceBot.read_directory_json_to_dict(None, [api_dir], "Gif API", "SpiceBot_GifSearch")
valid_gif_api_dict = SpiceBot.read_directory_json_to_dict([api_dir], "Gif API", "SpiceBot_GifSearch", logging=True)
config.define_section("SopelGifSearch", GifAPIMainSection, validate=False)
config.SopelGifSearch.configure_setting('extra', 'SpiceBot_GifSearch API Extra directory')
@ -55,13 +55,15 @@ def setup(bot):
dir_to_scan.append(api_dir)
bot.config.define_section("SopelGifSearch", GifAPIMainSection, validate=False)
SpiceBot.config.config.define_section("SopelGifSearch", GifAPIMainSection, validate=False)
if bot.config.SopelGifSearch.extra:
dir_to_scan.append(bot.config.SopelGifSearch.extra)
valid_gif_api_dict = SpiceBot.read_directory_json_to_dict(bot, dir_to_scan, "Gif API", "SpiceBot_GifSearch")
valid_gif_api_dict = SpiceBot.read_directory_json_to_dict(dir_to_scan, "Gif API", "SpiceBot_GifSearch", logging=True)
for gif_api in valid_gif_api_dict.keys():
bot.config.define_section(gif_api, GifAPISection, validate=False)
SpiceBot.config.config.define_section(gif_api, GifAPISection, validate=False)
apikey = eval("bot.config." + gif_api + ".apikey")
if apikey:
valid_gif_api_dict[gif_api]["apikey"] = apikey

View File

@ -42,6 +42,7 @@ def setup(bot):
# verify config settings for server
SpiceBot.logs.log('SpiceBot_Kick', "Checking for config settings")
bot.config.define_section("SpiceBot_Kick", SpiceBot_Kick, validate=False)
SpiceBot.config.config.define_section("SpiceBot_Kick", SpiceBot_Kick, validate=False)
@module.event('005')

View File

@ -23,7 +23,7 @@ def bot_command_logs(bot, trigger):
return
if not SpiceBot.inlist(logtype, SpiceBot.logs.dict["list"].keys()):
closestmatches = SpiceBot.similar_list(bot, logtype, SpiceBot.logs.dict["list"].keys(), 10, 'reverse')
closestmatches = SpiceBot.similar_list(logtype, SpiceBot.logs.dict["list"].keys(), 10, 'reverse')
if not len(closestmatches):
bot.osd("No valid logs match " + str(logtype) + ".", trigger.nick, 'notice')
else:

View File

@ -18,5 +18,5 @@ def nickname_comand_restart(bot, trigger):
SpiceBot.logs.log('SpiceBot_Restart', quitmessage)
bot.osd(quitmessage, bot.channels.keys())
# service_manip(bot, bot.nick, 'restart', 'SpiceBot_Restart')
# service_manip(bot.nick, 'restart', 'SpiceBot_Restart')
SpiceBot.spicebot_reload(bot, 'SpiceBot_Restart', quitmessage)

View File

@ -16,4 +16,4 @@ def setup(bot):
bot.memory['url_callbacks'] = sopel.tools.SopelMemory()
SpiceBot.logs.log('Sopel_Patch', "Removing Stock Modules and verifying Dummy Command is present.")
SpiceBot.stock_modules_begone(bot)
SpiceBot.stock_modules_begone()

View File

@ -25,6 +25,7 @@ def configure(config):
def setup(bot):
SpiceBot.logs.log('SpiceBot_Update', "Initial Setup processing")
bot.config.define_section("SpiceBot_Update", SpiceBot_Update_MainSection, validate=False)
SpiceBot.config.config.define_section("SpiceBot_Update", SpiceBot_Update_MainSection, validate=False)
@SpiceBot.prerun.prerun('nickname')
@ -51,9 +52,9 @@ def nickname_comand_update(bot, trigger):
bot.osd(quitmessage, bot.channels.keys())
if commandused == 'nodeps':
SpiceBot.spicebot_update(bot, False)
SpiceBot.spicebot_update(False)
if commandused == 'deps':
SpiceBot.spicebot_update(bot, True)
SpiceBot.spicebot_update(True)
# service_manip(bot, bot.nick, 'restart', 'SpiceBot_Update')
# service_manip(bot.nick, 'restart', 'SpiceBot_Update')
SpiceBot.spicebot_reload(bot, 'SpiceBot_Update', quitmessage)

View File

@ -50,6 +50,7 @@ def setup(bot):
# verify config settings for server
SpiceBot.logs.log('SpiceBot_OSD', "Checking for config settings")
bot.config.define_section("SpiceBot_OSD", SpiceBot_OSD, validate=False)
SpiceBot.config.config.define_section("SpiceBot_OSD", SpiceBot_OSD, validate=False)
@module.event('005')