cosmicbot/commands/admin.py

49 lines
1.1 KiB
Python

import plugin, subprocess, atexit
HOOKED=False
def saved(bot):
bot.tasks.save_state(0)
@plugin.listener
def hook(self,*args):
global HOOKED
if HOOKED: return
HOOKED=True
atexit.register(saved,self)
@plugin.group("admin")
def admin(self,channel,nick,subcmd,*args):
if not self.is_admin: return True
if subcmd not in "down pull save reload ping".split(): return True
return False
@admin.command("down")
def admin_down(self,channel,nick,subcmd,*args):
if HOOKED: atexit.unregister(saved)
self.tasks.stop()
self.tasks.save_state(0)
self._bot.die("Stopping...")
sys.exit(0)
@admin.command("pull")
def admin_pull(self,channel,nick,subcmd,*args):
if subprocess.run(["/usr/bin/git","pull"]).returncode==0:
self.say(channel,nick+": Pull successful!")
else:
self.say(channel,nick+": Pull failed!")
self.load_modules()
@admin.command("save")
def admin_save(self,channel,nick,subcmd,*args):
self.tasks.save_state(0)
@admin.command("reload")
def reloadPlugins(bot,channel,nick,*args):
if HOOKED: atexit.unregister(saved)
bot.load_modules()
@admin.command("ping")
def ping(self,channel,nick,*args):
self.say(channel,nick+": Pong!")