ehForwarderBot / efb-wechat-slave

A channel for EH Forwarder Bot.
GNU Affero General Public License v3.0
459 stars 62 forks source link

chat linked ... is not found [BUG] #127

Closed Neo-peng closed 2 years ago

Neo-peng commented 2 years ago

版本信息 Version Info

EH Forwarder Bot
Version: 2.1.1
Python version:
3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110]
Running on profile "default".

Master channel:
    Telegram Master (blueset.telegram) 2.2.4 # Default instance

Slave channel:
    WeChat Slave (blueset.wechat) 2.0.5 # Default instance

Middlewares:
    No middleware is enabled.

问题描述 Describe the bug

使用/link username 指令,成功连接某个好友到某个group后,使用/update_info指令,显示Chat linked (e2410161) is not found in the slave channel (WeChat Slave, blueset.wechat).,同时无法发送消息给此好友,同时如果用手机客户端聊天,聊天记录又会同步到此group

重现步骤 To Reproduce

可能无法重现,因为其他好友连接到某个group后,使用都正常,目前仅发现这一个好友出现此bug

截图 Screenshots

暂无截图

Verbose 日志 Log

Verbose 日志 ``` 请在下方贴出您的 Verbose 日志。如果您对隐私有所顾虑,您可以自行 隐去隐私信息、或 GPG 加密至 BD6B65EC00638DC9083781D5D4B65BB1A106200A。 【贴在下面】 Jan 01 20:56:09 VM-8-8-debian ehforwarderbot[120683]: Traceback (most recent call last): Jan 01 20:56:09 VM-8-8-debian ehforwarderbot[120683]: File "/usr/local/lib/python3.9/dist-packages/efb_telegram_master/chat_binding.py", line 891, in update_group_info Jan 01 20:56:09 VM-8-8-debian ehforwarderbot[120683]: chat = self.chat_manager.update_chat_obj(channel.get_chat(chat_uid), full_update=True) Jan 01 20:56:09 VM-8-8-debian ehforwarderbot[120683]: File "/usr/local/lib/python3.9/dist-packages/efb_wechat_slave/__init__.py", line 703, in get_chat Jan 01 20:56:09 VM-8-8-debian ehforwarderbot[120683]: chat = self.chats.search_chat(uid=chat_uid) Jan 01 20:56:09 VM-8-8-debian ehforwarderbot[120683]: File "/usr/local/lib/python3.9/dist-packages/efb_wechat_slave/chats.py", line 166, in search_chat Jan 01 20:56:09 VM-8-8-debian ehforwarderbot[120683]: return self.search_chat(uid, refresh=True) Jan 01 20:56:09 VM-8-8-debian ehforwarderbot[120683]: File "/usr/local/lib/python3.9/dist-packages/efb_wechat_slave/chats.py", line 168, in search_chat Jan 01 20:56:09 VM-8-8-debian ehforwarderbot[120683]: raise EFBChatNotFound() Jan 01 20:56:09 VM-8-8-debian ehforwarderbot[120683]: ehforwarderbot.exceptions.EFBChatNotFound Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: 2022-01-01 21:00:43,008 [ERROR]: efb_telegram_master.chat_binding (chat_binding.update_group_info; chat_binding.py:936) Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: Chat linked (blueset.wechat) is not found in the slave channel (e2410161). Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: Traceback (most recent call last): Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: File "/usr/local/lib/python3.9/dist-packages/efb_wechat_slave/chats.py", line 162, in search_chat Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: chat = wxpy.utils.ensure_one(self.bot.search(puid=uid)) Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: File "/usr/local/lib/python3.9/dist-packages/efb_wechat_slave/vendor/wxpy/utils/tools.py", line 42, in ensure_one Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: raise ValueError('more than one found') Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: ValueError: more than one found Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: During handling of the above exception, another exception occurred: Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: Traceback (most recent call last): Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: File "/usr/local/lib/python3.9/dist-packages/efb_wechat_slave/chats.py", line 162, in search_chat Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: chat = wxpy.utils.ensure_one(self.bot.search(puid=uid)) Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: File "/usr/local/lib/python3.9/dist-packages/efb_wechat_slave/vendor/wxpy/utils/tools.py", line 42, in ensure_one Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: raise ValueError('more than one found') Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: ValueError: more than one found Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: During handling of the above exception, another exception occurred: Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: Traceback (most recent call last): Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: File "/usr/local/lib/python3.9/dist-packages/efb_telegram_master/chat_binding.py", line 891, in update_group_info Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: chat = self.chat_manager.update_chat_obj(channel.get_chat(chat_uid), full_update=True) Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: File "/usr/local/lib/python3.9/dist-packages/efb_wechat_slave/__init__.py", line 703, in get_chat Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: chat = self.chats.search_chat(uid=chat_uid) Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: File "/usr/local/lib/python3.9/dist-packages/efb_wechat_slave/chats.py", line 166, in search_chat Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: return self.search_chat(uid, refresh=True) Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: File "/usr/local/lib/python3.9/dist-packages/efb_wechat_slave/chats.py", line 168, in search_chat Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: raise EFBChatNotFound() Jan 01 21:00:43 VM-8-8-debian ehforwarderbot[120683]: ehforwarderbot.exceptions.EFBChatNotFound 【贴在上面】 ```

备注 Additional context

Neo-peng commented 2 years ago

经过仔细验证,猜测问题出在好友列表上,问题如下:

  1. 有一个好友注销后又申请了新的微信号
  2. 但是我没有删除她注销前的账号,从而我的好友列表中有两个ta的微信号
  3. 使用/0_get_chat_list -r指令更新chat list
  4. 经过检查,两个微信号具有相同的hash值,从而导致绑定到group失败(猜测)

有了如上的信息后,尝试在config.yaml加入 flag refresh_friends: true,尝试更新好友列表(此时,我已经删除掉ta注销的账号),从而试图更正以上错误,但是尝试失败,下载下来的chat list,仍然保留着注销的微信号,即使我已经在手机客户端删除掉此账号。

Neo-peng commented 2 years ago

第二天再次尝试使用/0_get_chat_list -r指令更新chat list,经过检查,已经删除好友的注销账号从列表中消失,重新绑定到group成功。问题解决,猜测应该是cache的问题,此 issue 解决