def runBot(argv): # argv -1, sub program call if sys.argv[-1] == '--subprocessCall': # Remove the last item sys.argv.pop() try: # Bot login, run # QQBot is defined below. bot = QQBot._bot bot.Login(argv) bot.Run() finally: # Finally, always run, no matter what # If bot has conf, bot conf storeQQ if hasattr(bot, 'conf'): bot.conf.StoreQQ() else: # Not sub program called conf = QConf() # QQ run in background if conf.daemon: conf.Daemonize() if sys.argv[0].endswith('py') or sys.argv[0].endswith('pyc'): args = [sys.executable] + sys.argv else: args = sys.argv args = args + ['--mailAuthCode', conf.mailAuthCode] args = args + ['--qq', conf.qq] args = args + ['--subprocessCall'] while True: p = subprocess.Popen(args) code = p.wait() if code == 0: INFO('QQBot 正常停止') sys.exit(code) elif code == RESTART: args[-2] = conf.LoadQQ() INFO('5 秒后重新启动 QQBot (自动登陆,qq=%s)', args[-2]) time.sleep(5) elif code == FRESH_RESTART: args[-2] = '' INFO('5 秒后重新启动 QQBot (手工登陆)') time.sleep(5) else: CRITICAL('QQBOT 异常停止(code=%s)', code) if conf.restartOnOffline: args[-2] = conf.LoadQQ() INFO('15秒后重新启动 QQBot (自动登陆,qq=%s)', args[-2]) time.sleep(15) else: sys.exit(code)
def runBot(argv): if sys.argv[-1] == '--subprocessCall': sys.argv.pop() try: bot = QQBot._bot bot.Login(argv) bot.Run() finally: if hasattr(bot, 'conf'): bot.conf.StoreQQ() else: conf = QConf() if conf.daemon: conf.Daemonize() if sys.argv[0].endswith('py') or sys.argv[0].endswith('pyc'): args = [sys.executable] + sys.argv else: args = sys.argv args = args + ['--mailAuthCode', conf.mailAuthCode] args = args + ['--qq', conf.qq] args = args + ['--subprocessCall'] while True: p = subprocess.Popen(args) code = p.wait() if code == 0: INFO('QQBot 正常停止') sys.exit(code) elif code == RESTART: args[-2] = conf.LoadQQ() INFO('5 秒后重新启动 QQBot (自动登陆,qq=%s)', args[-2]) time.sleep(5) elif code == FRESH_RESTART: args[-2] = '' INFO('5 秒后重新启动 QQBot (手工登陆)') time.sleep(5) else: CRITICAL('QQBOT 异常停止(code=%s)', code) if conf.restartOnOffline: args[-2] = conf.LoadQQ() INFO('15秒后重新启动 QQBot (自动登陆,qq=%s)', args[-2]) time.sleep(15) else: sys.exit(code)