hot reload!

This commit is contained in:
jan6 2021-09-19 19:56:17 +03:00
parent 695163453c
commit 68ee237c14
3 changed files with 19 additions and 3 deletions

View File

@ -4,6 +4,7 @@ class Command:
self.sock=sock self.sock=sock
self.util=Util(sock) self.util=Util(sock)
def mesg(self,msg): self.util.mesg(msg) def mesg(self,msg): self.util.mesg(msg)
def err_perm(self,level="admin"): mesg("Error: insufficient privileges, you lack {level} access")
def exec_cmd(self,command,extra=[None]): def exec_cmd(self,command,extra=[None]):
if extra!=[None]: if extra!=[None]:
eval(f"self.{command}(self.prefix,self.cmd,self.pm,self.line,self.admin,extra)") eval(f"self.{command}(self.prefix,self.cmd,self.pm,self.line,self.admin,extra)")
@ -35,3 +36,11 @@ class Command:
mesg(f"no help available for \"{topic}\"...") mesg(f"no help available for \"{topic}\"...")
except AttributeError: mesg(f"there's no such thing as \"{topic}\"!") except AttributeError: mesg(f"there's no such thing as \"{topic}\"!")
except Exception as e: mesg(str(e.__class__)+" "+str(e)) except Exception as e: mesg(str(e.__class__)+" "+str(e))
def reload(self,prefix,cmd,pm,line,admin):
mesg=self.mesg
if admin:
mesg("reloading...")
self.util.reload()
mesg("reloaded!")
else:
err_perm()

View File

@ -24,4 +24,4 @@ class config:
class cmd: class cmd:
prefixes=["6","'"] prefixes=["6","'"]
enabled_commands=["help","echo"] enabled_commands=["help","echo"]
admin_commands=["eval","quit"] admin_commands=["eval","quit","reload"]

View File

@ -1,8 +1,10 @@
import irctokens import irctokens
from config import config from config import config as Config
from util import Util from util import Util
from command import Command from commands import Command
import sys, importlib
def stuff(bot,sock): def stuff(bot,sock):
config=Config
chan=config.server.channel chan=config.server.channel
util=Util(sock) util=Util(sock)
command=Command(sock) command=Command(sock)
@ -93,6 +95,11 @@ def stuff(bot,sock):
quit() quit()
elif is_adm and (cmd.startswith("q ") or cmd.startswith("quit")): elif is_adm and (cmd.startswith("q ") or cmd.startswith("quit")):
quit(cmd.split(" ",1)[1]) quit(cmd.split(" ",1)[1])
elif is_adm and cmd.startswith("reload"):
# command.exec_cmd("reload")
command=importlib.reload(sys.modules["commands"]).Command(sock)
config=importlib.reload(sys.modules["config"]).config
mesg("reloaded")
elif cmd.startswith("eval "): elif cmd.startswith("eval "):
if(is_adm): if(is_adm):
try: try: