@@ -113,21 +113,12 @@ class WechatChannel(ChatChannel): | |||
# login by scan QRCode | |||
hotReload = conf().get("hot_reload", False) | |||
status_path = os.path.join(get_appdata_dir(), "itchat.pkl") | |||
try: | |||
itchat.auto_login( | |||
enableCmdQR=2, | |||
hotReload=hotReload, | |||
statusStorageDir=status_path, | |||
qrCallback=qrCallback, | |||
) | |||
except Exception as e: | |||
if hotReload: | |||
logger.error("Hot reload failed, try to login without hot reload") | |||
itchat.logout() | |||
os.remove(status_path) | |||
itchat.auto_login(enableCmdQR=2, hotReload=hotReload, qrCallback=qrCallback) | |||
else: | |||
raise e | |||
itchat.auto_login( | |||
enableCmdQR=2, | |||
hotReload=hotReload, | |||
statusStorageDir=status_path, | |||
qrCallback=qrCallback, | |||
) | |||
self.user_id = itchat.instance.storageClass.userName | |||
self.name = itchat.instance.storageClass.nickName | |||
logger.info("Wechat login success, user_id: {}, nickname: {}".format(self.user_id, self.name)) | |||
@@ -367,7 +367,7 @@ def sync_check(self): | |||
regx = r'window.synccheck={retcode:"(\d+)",selector:"(\d+)"}' | |||
pm = re.search(regx, r.text) | |||
if pm is None or pm.group(1) != '0': | |||
logger.debug('Unexpected sync check result: %s' % r.text) | |||
logger.error('Unexpected sync check result: %s' % r.text) | |||
return None | |||
return pm.group(2) | |||
@@ -25,9 +25,11 @@ def auto_login(self, hotReload=False, statusStorageDir='itchat.pkl', | |||
self.useHotReload = hotReload | |||
self.hotReloadDir = statusStorageDir | |||
if hotReload: | |||
if self.load_login_status(statusStorageDir, | |||
if rval:=self.load_login_status(statusStorageDir, | |||
loginCallback=loginCallback, exitCallback=exitCallback): | |||
return | |||
logger.error('hot reload failed, logging in normally, {}'.format(rval)) | |||
self.logout() | |||
self.login(enableCmdQR=enableCmdQR, picDir=picDir, qrCallback=qrCallback, | |||
loginCallback=loginCallback, exitCallback=exitCallback) | |||
self.dump_login_status(statusStorageDir) | |||