mirror of
https://github.com/SpiceBot/SpiceBot.git
synced 2026-11-13 06:59:53 -05:00
commit
7f25c89c17
@ -6,6 +6,14 @@ SpiceBot aims to run SpiceBot as an IRC service
|
|||||||
Use at your own risk. Problems are not my fault™.
|
Use at your own risk. Problems are not my fault™.
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
This install assumes you know that you need sopel installed, depending on how bleeding edge you want sopel to be,
|
||||||
|
|
||||||
|
````
|
||||||
|
pip3 install sopel>=6.0,<7
|
||||||
|
OR
|
||||||
|
pip3 install git+https://github.com/sopel-irc/sopel@master
|
||||||
|
````
|
||||||
|
|
||||||
````
|
````
|
||||||
git clone https://github.com/SpiceBot/SpiceBot.git
|
git clone https://github.com/SpiceBot/SpiceBot.git
|
||||||
cd SpiceBot
|
cd SpiceBot
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
sopel>=6.0,<7
|
|
||||||
spicemanip>=0.1.6
|
spicemanip>=0.1.6
|
||||||
gitpython
|
gitpython
|
||||||
fake-useragent
|
fake-useragent
|
||||||
|
|||||||
@ -17,6 +17,10 @@ def setup(bot):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@sopel.module.nickname_commands('owners', 'owner')
|
@sopel.module.nickname_commands('owners', 'owner')
|
||||||
def bot_command_owners(bot, trigger):
|
def bot_command_owners(bot, trigger):
|
||||||
bot_command_process(bot, trigger)
|
bot_command_process(bot, trigger)
|
||||||
|
|||||||
@ -20,6 +20,11 @@ def setup(bot):
|
|||||||
threading.Thread(target=setup_thread, args=(bot,)).start()
|
threading.Thread(target=setup_thread, args=(bot,)).start()
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
if "Sopel_BotEvents" in bot.memory:
|
||||||
|
del bot.memory["Sopel_BotEvents"]
|
||||||
|
|
||||||
|
|
||||||
def setup_thread(bot):
|
def setup_thread(bot):
|
||||||
if "Sopel_BotEvents" not in bot.memory:
|
if "Sopel_BotEvents" not in bot.memory:
|
||||||
bot.memory["Sopel_BotEvents"] = {"loaded": [], "startup": []}
|
bot.memory["Sopel_BotEvents"] = {"loaded": [], "startup": []}
|
||||||
|
|||||||
@ -51,6 +51,11 @@ def setup(bot):
|
|||||||
bot.memory['SpiceBot_Channels']['ProcessLock'] = False
|
bot.memory['SpiceBot_Channels']['ProcessLock'] = False
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
if "SpiceBot_Channels" in bot.memory:
|
||||||
|
del bot.memory["SpiceBot_Channels"]
|
||||||
|
|
||||||
|
|
||||||
@sopel.module.event('001')
|
@sopel.module.event('001')
|
||||||
@sopel.module.rule('.*')
|
@sopel.module.rule('.*')
|
||||||
def trigger_channel_list_initial(bot, trigger):
|
def trigger_channel_list_initial(bot, trigger):
|
||||||
@ -132,7 +137,7 @@ def watch_chanlist_complete(bot, trigger):
|
|||||||
|
|
||||||
|
|
||||||
@sopel.module.nickname_commands('channels', 'channel')
|
@sopel.module.nickname_commands('channels', 'channel')
|
||||||
def nickname_comand_chanstats(bot, trigger):
|
def nickname_comand_channels(bot, trigger):
|
||||||
|
|
||||||
triggerargs, triggercommand = sopel_triggerargs(bot, trigger, 'nickname_command')
|
triggerargs, triggercommand = sopel_triggerargs(bot, trigger, 'nickname_command')
|
||||||
|
|
||||||
|
|||||||
@ -26,6 +26,11 @@ def setup(bot):
|
|||||||
threading.Thread(target=setup_thread, args=(bot,)).start()
|
threading.Thread(target=setup_thread, args=(bot,)).start()
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
if "SpiceBot_CommandsQuery" in bot.memory:
|
||||||
|
del bot.memory["SpiceBot_CommandsQuery"]
|
||||||
|
|
||||||
|
|
||||||
def setup_thread(bot):
|
def setup_thread(bot):
|
||||||
|
|
||||||
if 'SpiceBot_CommandsQuery' not in bot.memory:
|
if 'SpiceBot_CommandsQuery' not in bot.memory:
|
||||||
|
|||||||
@ -21,6 +21,10 @@ def setup(bot):
|
|||||||
SopelDB._create_table = SopelDBCache._create_table
|
SopelDB._create_table = SopelDBCache._create_table
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class SopelDBCache:
|
class SopelDBCache:
|
||||||
|
|
||||||
"""Dynamic Table Creation"""
|
"""Dynamic Table Creation"""
|
||||||
|
|||||||
@ -11,3 +11,8 @@ def setup(bot):
|
|||||||
bot_logging(bot, 'SpiceBot_DatabaseCache', "Setting up Database Cache")
|
bot_logging(bot, 'SpiceBot_DatabaseCache', "Setting up Database Cache")
|
||||||
if 'SpiceBot_DatabaseCache' not in bot.memory:
|
if 'SpiceBot_DatabaseCache' not in bot.memory:
|
||||||
bot.memory['SpiceBot_DatabaseCache'] = dict()
|
bot.memory['SpiceBot_DatabaseCache'] = dict()
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
if "SpiceBot_DatabaseCache" in bot.memory:
|
||||||
|
del bot.memory["SpiceBot_DatabaseCache"]
|
||||||
|
|||||||
@ -6,6 +6,18 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi
|
|||||||
import sopel.module
|
import sopel.module
|
||||||
|
|
||||||
|
|
||||||
|
def configure(config):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def setup(bot):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
"""Dyanmic Table Creation"""
|
"""Dyanmic Table Creation"""
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -17,6 +17,10 @@ def setup(bot):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@sopel.module.nickname_commands('help', 'docs', 'wiki')
|
@sopel.module.nickname_commands('help', 'docs', 'wiki')
|
||||||
def bot_command_owners(bot, trigger):
|
def bot_command_owners(bot, trigger):
|
||||||
bot.osd(["IRC Modules Repository", str(github_dict["url_main"] + github_dict["repo_owner"] + "/" + github_dict["repo_name"] + github_dict["url_path_wiki"])])
|
bot.osd(["IRC Modules Repository", str(github_dict["url_main"] + github_dict["repo_owner"] + "/" + github_dict["repo_name"] + github_dict["url_path_wiki"])])
|
||||||
|
|||||||
@ -15,6 +15,10 @@ def setup(bot):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@sopel.module.rule(r'(?i)(hi|hello|hey),? $nickname[ \t]*$')
|
@sopel.module.rule(r'(?i)(hi|hello|hey),? $nickname[ \t]*$')
|
||||||
def bot_command_hello(bot, trigger):
|
def bot_command_hello(bot, trigger):
|
||||||
hello = spicemanip.main(['Hi', 'Hey', 'Hello'], "random")
|
hello = spicemanip.main(['Hi', 'Hey', 'Hello'], "random")
|
||||||
|
|||||||
@ -13,6 +13,10 @@ def setup(bot):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@sopel.module.nickname_commands('gender')
|
@sopel.module.nickname_commands('gender')
|
||||||
def bot_command_gender(bot, trigger):
|
def bot_command_gender(bot, trigger):
|
||||||
bot.osd("If societal genders are binary, my gender is female")
|
bot.osd("If societal genders are binary, my gender is female")
|
||||||
|
|||||||
@ -57,6 +57,11 @@ def setup(bot):
|
|||||||
threading.Thread(target=setup_thread, args=(bot,)).start()
|
threading.Thread(target=setup_thread, args=(bot,)).start()
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
if "SpiceBot_GifSearch" in bot.memory:
|
||||||
|
del bot.memory["SpiceBot_GifSearch"]
|
||||||
|
|
||||||
|
|
||||||
def setup_thread(bot):
|
def setup_thread(bot):
|
||||||
|
|
||||||
startup_bot_event(bot, "SpiceBot_GifSearch")
|
startup_bot_event(bot, "SpiceBot_GifSearch")
|
||||||
|
|||||||
@ -13,6 +13,10 @@ def setup(bot):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@sopel.module.rule(r'(?i)(Fuck|Screw) (you|off),? $nickname[ \t]*$')
|
@sopel.module.rule(r'(?i)(Fuck|Screw) (you|off),? $nickname[ \t]*$')
|
||||||
def bot_command_srewyou(bot, trigger):
|
def bot_command_srewyou(bot, trigger):
|
||||||
bot.osd("Watch your mouth, " + trigger.nick + ", or I'll tell your mother!")
|
bot.osd("Watch your mouth, " + trigger.nick + ", or I'll tell your mother!")
|
||||||
|
|||||||
@ -30,6 +30,13 @@ def setup(bot):
|
|||||||
bot.memory['SpiceBot_Logs_queue'] = []
|
bot.memory['SpiceBot_Logs_queue'] = []
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
if "SpiceBot_Logs" in bot.memory:
|
||||||
|
del bot.memory["SpiceBot_Logs"]
|
||||||
|
if "SpiceBot_Logs_queue" in bot.memory:
|
||||||
|
del bot.memory["SpiceBot_Logs_queue"]
|
||||||
|
|
||||||
|
|
||||||
@sopel.module.event('001')
|
@sopel.module.event('001')
|
||||||
@sopel.module.rule('.*')
|
@sopel.module.rule('.*')
|
||||||
def join_log_channel(bot, trigger):
|
def join_log_channel(bot, trigger):
|
||||||
|
|||||||
@ -17,6 +17,10 @@ def setup(bot):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@sopel.module.nickname_commands('action')
|
@sopel.module.nickname_commands('action')
|
||||||
def bot_command_action(bot, trigger):
|
def bot_command_action(bot, trigger):
|
||||||
bot_command_process(bot, trigger)
|
bot_command_process(bot, trigger)
|
||||||
|
|||||||
@ -6,16 +6,22 @@ from __future__ import unicode_literals, absolute_import, print_function, divisi
|
|||||||
import sopel.module
|
import sopel.module
|
||||||
from sopel.config.types import StaticSection, ValidatedAttribute
|
from sopel.config.types import StaticSection, ValidatedAttribute
|
||||||
|
|
||||||
from sopel_modules.SpiceBot_SBTools import service_manip, bot_logging
|
from sopel_modules.SpiceBot_SBTools import service_manip, bot_logging, spicebot_reload
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@sopel.module.nickname_commands('restart')
|
@sopel.module.nickname_commands('restart')
|
||||||
def nickname_comand_chanstats(bot, trigger):
|
def nickname_comand_restart(bot, trigger):
|
||||||
|
|
||||||
if not trigger.admin:
|
if not trigger.admin:
|
||||||
bot.say("You are not authorized to perform this function.")
|
bot.say("You are not authorized to perform this function.")
|
||||||
|
|
||||||
bot_logging(bot, 'SpiceBot_Restart', "Received command from " + trigger.nick + " to restart")
|
quitmessage = "Received command from " + trigger.nick + " to restart. Be Back Soon!"
|
||||||
bot.osd("Received command from " + trigger.nick + " to restart. Be Back Soon!", bot.channels.keys())
|
bot_logging(bot, 'SpiceBot_Restart', quitmessage)
|
||||||
|
bot.osd(quitmessage, bot.channels.keys())
|
||||||
|
|
||||||
service_manip(bot, bot.nick, 'restart', 'SpiceBot_Restart')
|
# service_manip(bot, bot.nick, 'restart', 'SpiceBot_Restart')
|
||||||
|
spicebot_reload(bot, 'SpiceBot_Restart', quitmessage)
|
||||||
|
|||||||
@ -97,8 +97,7 @@ def bot_logging(bot, logtype, logentry):
|
|||||||
|
|
||||||
logmessage = "[" + logtype + "] " + logentry + ""
|
logmessage = "[" + logtype + "] " + logentry + ""
|
||||||
|
|
||||||
if bot.config.SpiceBot_Logs.logging_channel:
|
bot.memory['SpiceBot_Logs_queue'].append(logmessage)
|
||||||
bot.memory['SpiceBot_Logs_queue'].append(logmessage)
|
|
||||||
|
|
||||||
stderr("\n" + logmessage + "\n")
|
stderr("\n" + logmessage + "\n")
|
||||||
|
|
||||||
@ -252,6 +251,13 @@ def channel_list_current(bot):
|
|||||||
"""Environment Functions"""
|
"""Environment Functions"""
|
||||||
|
|
||||||
|
|
||||||
|
def spicebot_reload(bot, log_from='service_manip', quitmessage='Recieved QUIT'):
|
||||||
|
# service_manip(bot, bot.nick, 'restart', log_from)
|
||||||
|
# bot.reload_plugins()
|
||||||
|
# bot.write(('NOTICE', bot.nick), '001 Foo :Hello')
|
||||||
|
bot.restart(quitmessage)
|
||||||
|
|
||||||
|
|
||||||
def service_manip(bot, servicename, dowhat, log_from='service_manip'):
|
def service_manip(bot, servicename, dowhat, log_from='service_manip'):
|
||||||
if str(dowhat) not in ["start", "stop", "restart"]:
|
if str(dowhat) not in ["start", "stop", "restart"]:
|
||||||
return
|
return
|
||||||
|
|||||||
@ -18,6 +18,10 @@ def setup(bot):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@module.event('001')
|
@module.event('001')
|
||||||
@module.rule('.*')
|
@module.rule('.*')
|
||||||
@module.thread(True)
|
@module.thread(True)
|
||||||
|
|||||||
@ -7,10 +7,11 @@ import sopel.module
|
|||||||
from sopel.config.types import StaticSection, ValidatedAttribute
|
from sopel.config.types import StaticSection, ValidatedAttribute
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import pip
|
||||||
|
|
||||||
import spicemanip
|
import spicemanip
|
||||||
|
|
||||||
from sopel_modules.SpiceBot_SBTools import service_manip, sopel_triggerargs, command_permissions_check, bot_logging
|
from sopel_modules.SpiceBot_SBTools import service_manip, sopel_triggerargs, command_permissions_check, bot_logging, spicebot_reload
|
||||||
|
|
||||||
|
|
||||||
class SpiceBot_Update_MainSection(StaticSection):
|
class SpiceBot_Update_MainSection(StaticSection):
|
||||||
@ -29,8 +30,12 @@ def setup(bot):
|
|||||||
bot.config.define_section("SpiceBot_Update", SpiceBot_Update_MainSection, validate=False)
|
bot.config.define_section("SpiceBot_Update", SpiceBot_Update_MainSection, validate=False)
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@sopel.module.nickname_commands('update')
|
@sopel.module.nickname_commands('update')
|
||||||
def nickname_comand_chanstats(bot, trigger):
|
def nickname_comand_update(bot, trigger):
|
||||||
|
|
||||||
if not command_permissions_check(bot, trigger, ['admins', 'owner', 'OP', 'ADMIN', 'OWNER']):
|
if not command_permissions_check(bot, trigger, ['admins', 'owner', 'OP', 'ADMIN', 'OWNER']):
|
||||||
bot.say("I was unable to process this Bot Nick command due to privilege issues.")
|
bot.say("I was unable to process this Bot Nick command due to privilege issues.")
|
||||||
@ -49,21 +54,23 @@ def nickname_comand_chanstats(bot, trigger):
|
|||||||
|
|
||||||
triggerargs = spicemanip.main(triggerargs, '2+', 'list')
|
triggerargs = spicemanip.main(triggerargs, '2+', 'list')
|
||||||
|
|
||||||
bot_logging(bot, 'SpiceBot_Update', "Received command from " + trigger.nick + " to update from Github and restart")
|
quitmessage = "Received command from " + trigger.nick + " to update from Github and restart"
|
||||||
bot.osd("Received command from " + trigger.nick + " to update from Github and restart. Be Back Soon!", bot.channels.keys())
|
bot_logging(bot, 'SpiceBot_Update', quitmessage)
|
||||||
|
bot.osd(quitmessage, bot.channels.keys())
|
||||||
|
|
||||||
if commandused == 'nodeps':
|
if commandused == 'nodeps':
|
||||||
spicebot_update(bot, "False")
|
spicebot_update(bot, False)
|
||||||
if commandused == 'deps':
|
if commandused == 'deps':
|
||||||
spicebot_update(bot, "True")
|
spicebot_update(bot, True)
|
||||||
|
|
||||||
service_manip(bot, bot.nick, 'restart', 'SpiceBot_Update')
|
# service_manip(bot, bot.nick, 'restart', 'SpiceBot_Update')
|
||||||
|
spicebot_reload(bot, 'SpiceBot_Update', quitmessage)
|
||||||
|
|
||||||
|
|
||||||
def spicebot_update(bot, deps="False"):
|
def spicebot_update(bot, deps=False):
|
||||||
|
|
||||||
pipcommand = "sudo pip3 install --upgrade"
|
pipcommand = "sudo pip3 install --upgrade"
|
||||||
if deps == "False":
|
if not deps:
|
||||||
pipcommand += " --no-deps"
|
pipcommand += " --no-deps"
|
||||||
pipcommand += " --force-reinstall"
|
pipcommand += " --force-reinstall"
|
||||||
pipcommand += " git+" + str(bot.config.SpiceBot_Update.gitrepo) + "@" + str(bot.config.SpiceBot_Update.gitbranch)
|
pipcommand += " git+" + str(bot.config.SpiceBot_Update.gitrepo) + "@" + str(bot.config.SpiceBot_Update.gitbranch)
|
||||||
@ -72,6 +79,11 @@ def spicebot_update(bot, deps="False"):
|
|||||||
for line in os.popen(pipcommand).read().split('\n'):
|
for line in os.popen(pipcommand).read().split('\n'):
|
||||||
bot_logging(bot, 'SpiceBot_Update', " " + line)
|
bot_logging(bot, 'SpiceBot_Update', " " + line)
|
||||||
|
|
||||||
|
stock_modules_begone(bot)
|
||||||
|
|
||||||
|
|
||||||
|
def stock_modules_begone(bot):
|
||||||
|
|
||||||
# Remove stock modules, if present
|
# Remove stock modules, if present
|
||||||
main_sopel_dir = os.path.dirname(os.path.abspath(sopel.__file__))
|
main_sopel_dir = os.path.dirname(os.path.abspath(sopel.__file__))
|
||||||
modules_dir = os.path.join(main_sopel_dir, 'modules')
|
modules_dir = os.path.join(main_sopel_dir, 'modules')
|
||||||
|
|||||||
@ -22,6 +22,11 @@ def setup(bot):
|
|||||||
bot.memory["SpiceBot_Uptime"] = now
|
bot.memory["SpiceBot_Uptime"] = now
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
if "SpiceBot_Uptime" in bot.memory:
|
||||||
|
del bot.memory["SpiceBot_Uptime"]
|
||||||
|
|
||||||
|
|
||||||
@sopel.module.nickname_commands('uptime')
|
@sopel.module.nickname_commands('uptime')
|
||||||
def bot_command_srewyou(bot, trigger):
|
def bot_command_srewyou(bot, trigger):
|
||||||
timesince = str(humanized_time(time.time() - bot.memory["SpiceBot_Uptime"])) + " ago."
|
timesince = str(humanized_time(time.time() - bot.memory["SpiceBot_Uptime"])) + " ago."
|
||||||
|
|||||||
@ -37,23 +37,27 @@ def setup(bot):
|
|||||||
# Inject OSD
|
# Inject OSD
|
||||||
bot_logging(bot, 'SpiceBot_OSD', "Implanting OSD function into bot")
|
bot_logging(bot, 'SpiceBot_OSD', "Implanting OSD function into bot")
|
||||||
bot.osd = SopelOSD.osd
|
bot.osd = SopelOSD.osd
|
||||||
bot.SopelWrapper.osd = SopelOSD.SopelWrapper.osd
|
sopel.bot.SopelWrapper.osd = SopelOSD.SopelWrapper.osd
|
||||||
tools.get_available_message_bytes = ToolsOSD.get_available_message_bytes
|
tools.get_available_message_bytes = ToolsOSD.get_available_message_bytes
|
||||||
tools.get_sendable_message_list = ToolsOSD.get_sendable_message_list
|
tools.get_sendable_message_list = ToolsOSD.get_sendable_message_list
|
||||||
tools.get_message_recipientgroups = ToolsOSD.get_message_recipientgroups
|
tools.get_message_recipientgroups = ToolsOSD.get_message_recipientgroups
|
||||||
|
|
||||||
# overwrite default bot messaging
|
# overwrite default bot messaging
|
||||||
bot_logging(bot, 'SpiceBot_OSD', "Overwrite Default Sopel messaging commands")
|
bot_logging(bot, 'SpiceBot_OSD', "Overwrite Default Sopel messaging commands")
|
||||||
bot.SopelWrapper.say = SopelOSD.SopelWrapper.say
|
sopel.bot.SopelWrapper.say = SopelOSD.SopelWrapper.say
|
||||||
bot.SopelWrapper.action = SopelOSD.SopelWrapper.action
|
sopel.bot.SopelWrapper.action = SopelOSD.SopelWrapper.action
|
||||||
bot.SopelWrapper.notice = SopelOSD.SopelWrapper.notice
|
sopel.bot.SopelWrapper.notice = SopelOSD.SopelWrapper.notice
|
||||||
bot.SopelWrapper.reply = SopelOSD.SopelWrapper.reply
|
sopel.bot.SopelWrapper.reply = SopelOSD.SopelWrapper.reply
|
||||||
|
|
||||||
# verify config settings for server
|
# verify config settings for server
|
||||||
bot_logging(bot, 'SpiceBot_OSD', "Checking for config settings")
|
bot_logging(bot, 'SpiceBot_OSD', "Checking for config settings")
|
||||||
bot.config.define_section("MAXTARGCONFIG", MAXTARGCONFIG, validate=False)
|
bot.config.define_section("MAXTARGCONFIG", MAXTARGCONFIG, validate=False)
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown(bot):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
# RPL_ISUPPORT = '005'
|
# RPL_ISUPPORT = '005'
|
||||||
@module.event('005')
|
@module.event('005')
|
||||||
@module.rule('.*')
|
@module.rule('.*')
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user