littlecodersh / ItChat

A complete and graceful API for Wechat. 微信个人号接口、微信机器人及命令行微信,三十行即可自定义个人号机器人。
http://itchat.readthedocs.io
MIT License
25.48k stars 5.63k forks source link

revoke()方法在人数多的群聊中撤回消息太慢 #1015

Open 005Lacia opened 4 months ago

005Lacia commented 4 months ago

您的itchat版本为:1.5.0.dev

其他的内容或者问题更详细的描述都可以添加在下面:

在人数较多的群聊(300人左右)中撤回消息非常慢,长达6~8秒,而在个位人数的群聊中撤回消息只需要1秒左右。

python代码: `# 事件消息 @itchat.msg_register(NOTE, isGroupChat=True) def note(msg):

def revoke_msg():
    revoke_id = revoke_dict[cx_id]
    itchat.revoke(msgId=revoke_id, toUserName=msg.user.userName)  # 撤回查询映射的消息
    revoke_dict.pop(cx_id, None)

content = msg.Content
revoke_sign = re.search('<!\[CDATA\[(.*?)]]>', content)
if revoke_sign:
    if revoke_sign[1][-7:] == '撤回了一条消息':  # 撤回消息事件
        cx_id_sign = re.search('<msgid>(.*?)</msgid>', content)
        if cx_id_sign:
            cx_id = cx_id_sign[1]
            if cx_id in revoke_dict:
                Thread(target=revoke_msg).start()`