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!")