wechaty/python-wechaty

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

gpww opened this issue · 4 comments

gpww commented

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()

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

for contact_id in self.payload.mention_ids]

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

同样遇到这个问题,通过

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

这个代码没有解决问题。
使用 #390 ,可以解决问题,希望官方可以重视。
感谢@B1gM8c 的贡献。

According to the diffs between #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.