xieyumc / YuYuWechat

一个让微信(非WEB版)定时循环发送消息/文件(cron表达式精确到分钟),批量群发消息,定时检查聊天记录的小工具🚀,提供了简易直观的界面,并支持邮箱报警等功能,可部署到任意平台
GNU General Public License v3.0
645 stars 70 forks source link

如何通过API接受微信收到的消息? #12

Closed zengchao0215 closed 1 month ago

zengchao0215 commented 1 month ago

如何通过API接受微信收到的消息?

xieyumc commented 1 month ago

不太明白你说的是什么,YuYuWechat要获取聊天记录可以使用以下命令

curl -X POST http://192.168.50.62:8000/wechat/get_dialogs/ \
-H "Content-Type: application/json" \
-d '{"name": "文件传输助手", "n_n_msg": 5}'

192.168.50.62改成YuYuWechat_server部署的电脑ip地址

zengchao0215 commented 1 month ago

意思是说,能否当微信收到消息的时候,主动推送到指定的API上。

xieyumc commented 1 month ago

这个功能YuYuWeChat还不支持,不过,在代码调用的底层已经支持检测新消息了,你可以自己写一个

详细查看YuYuWechat/YuYuWechatV2_Server/wechat_app/ui_auto_wechat.py中的

    # 检测微信是否收到新消息
    def check_new_msg(self):
        self.open_wechat()
        self.get_wechat()

        # 获取左侧聊天按钮
        chat_btn = auto.ButtonControl(Name=self.lc.chats)
        double_click(chat_btn)

        # 持续点击聊天按钮,直到获取完全部新消息
        item = auto.ListItemControl(Depth=10)
        prev_name = item.ButtonControl().Name

        while True:
            # 判断该联系人是否有新消息
            pane_control = item.PaneControl()
            if len(pane_control.GetChildren()) == 3:
                print(f"{item.ButtonControl().Name} 有新消息")
                # 判断该联系人是否需要自动回复
                if item.ButtonControl().Name in self.auto_reply_contacts:
                    print(f"自动回复 {item.ButtonControl().Name}")
                    self._auto_reply(item, self.auto_reply_msg)

            click(item)

            # 跳转到下一个新消息
            double_click(chat_btn)
            item = auto.ListItemControl(Depth=10)

            # 已经完成遍历,退出循环
            if prev_name == item.ButtonControl().Name:
                break

            prev_name = item.ButtonControl().Name