wechaty / python-wechaty

Python Wechaty is a Conversational RPA SDK for Chatbot Makers written in Python
https://wechaty.readthedocs.io/zh_CN/latest/
Apache License 2.0
1.55k stars 229 forks source link

[Bug]: 从windows微信客户端@机器人,msg.mention_text() 会报错,手机端不会 #389

Open gpww opened 1 year ago

gpww commented 1 year ago

Environment

- wechaty:
- wechaty-puppet: 
- wechaty-puppet-service: 
- wechaty-plugin-contrib: 
- token type: padlocal|wxwork|xp
- the version of wechaty docker container: [0.65]

Description

从windows微信客户端@机器人,msg.mention_text() 会报错

Wechaty - ERROR - internal error <>

Minimum reproducible code

text = await msg.mention_text()

aardwolf109 commented 1 year ago

这里contact_id会拿到一个空"",可以先判空过滤一下绕过

https://github.com/wechaty/python-wechaty/blob/6c9d54ffc2ad4042fdb000c417b90a6807dfc29b/src/wechaty/user/message.py#L462

wj-Mcat commented 1 year ago

It's not a bug in python-wechaty: you should check whether the text is mentional message with the following:

if await msg.mention_self():
    pass

if await msg.mention_list():
    mention_text = await msg.mention_text()

So please help yourself to upgrade the code. Good luck to you.

biofer commented 1 year ago

同样遇到这个问题,通过

if await msg.mention_self():
    if await msg.mention_self():
        pass
    if await msg.mention_list():
        keyword = await msg.mention_text()

这个代码没有解决问题。 使用 https://github.com/wechaty/python-wechaty/pull/390 ,可以解决问题,希望官方可以重视。 感谢@B1gM8c 的贡献。

wj-Mcat commented 1 year ago

According to the diffs between https://github.com/wechaty/python-wechaty/pull/390 and https://github.com/wechaty/python-wechaty/tree/main, it seems that cached contacts is dirty not been updated. Fetching all of contacts works but violence.

I will try to merge this pr to fix this bug and refactor it later.