Loading

WechatPCAPI 微信PC版的API接口 简单聊天

下载整个文档

WechatPCAPI

安装对应微信版本

src/Wechat-V2.7.1.82.exe

修改src/test.py

from WechatPCAPI import WechatPCAPI
import time

msg = {
    "num":0,
    "receive_wechat_id":'', #接收消息微信ID
    "remark_name":"", #接收消息微信ID 备注
    "str":""
}

# 接收消息的回调函数,可自行定义
def on_message(message):
    msg_data = message["data"]

    if "wx_id" in msg_data.keys():
        if msg_data['wx_id'] == msg["receive_wechat_id"]:
            msg["remark_name"] = msg_data['remark_name']
            print("您正在与{}对话".format(msg["remark_name"]))
    elif "msg" in msg_data.keys():
        if "from_wxid" in msg_data.keys():
            if msg_data["from_wxid"] == msg["receive_wechat_id"] and msg["str"] != "":
                if msg_data["msg"] != msg["str"]:
                    msg["num"] += 1
                    if msg["num"] == 0: 
                    	print("【So Sad T_T 】今天{}没有找您!".format(msg["remark_name"], msg["num"]))
                    else:
	                    print("今天{}一共给您发送了【{}】条信息!".format(msg["remark_name"], msg["num"]))
                    print("【新信息】{}给您发消息啦!!!".format(msg["remark_name"]))
                    print("时间:{}".format(msg_data['time']))
                    print("内容:{}".format(msg_data["msg"]))
                    print("请输入回复内容:\n")
                    with open('zhlmsg.txt', 'a+') as f:  # 设置文件对象
                        f.write(msg["remark_name"]+"   "+msg_data['time']+"\n")
                        f.write(msg_data["msg"]+"\n")
                else:
                    with open('zhlmsg.txt', 'a+') as f:  # 设置文件对象
                        f.write("您自己   "+msg_data['time']+"\n")
                        f.write(msg_data["msg"]+"\n")
            else:
                print("=========================================================")
                print("您收到的是其他人的信息:\n【{}】\n".format(msg_data["msg"][0:50]))
                if len(msg_data['msg'])>50:
                    print("对方发送的消息很长,请到微信进行查看!\n")
                print("=========================================================")
                if msg["num"] == 0: 
                    	print("【So Sad T_T 】今天{}没有找您!".format(msg["remark_name"], msg["num"]))
                else:
                    print("今天{}一共给您发送了【{}】条信息!".format(msg["remark_name"], msg["num"]))
                print("【输入 T 退出聊天】您可以继续与【{}】聊天:\n".format(msg["remark_name"]))
    else:
        pass



def main():
    # 初始化wx实例
    wx_inst = WechatPCAPI(on_message=on_message)

    # 启动微信 目前仅支持微信V2.7.1.82
    wx_inst.start_wechat(block=True)

    # 等待登陆成功,此时需要人为扫码登录微信
    while not wx_inst.get_myself():
        time.sleep(5)

    # 登录成功了
    #print(wx_inst.get_myself())


    # 以下尝试发送各类消息给文件传输助手,可以换成任何人的wx_id
    while True:
        if msg["remark_name"] != "":
            msg["str"] = input("【输入 T 退出聊天】请输入您要发送给【{}】的信息:\n".format(msg["remark_name"]))
            if msg["str"] == "T" or msg["str"] == "t": break
            wx_inst.send_text(to_user=msg["receive_wechat_id"], msg=msg["str"])
            if msg["num"] == 0: 
            	print("【So Sad T_T 】今天{}没有找您!".format(msg["remark_name"], msg["num"]))
            else:
                print("今天{}一共给您发送了【{}】条信息!".format(msg["remark_name"], msg["num"]))

    time.sleep(10)
    # 更新所有好友信息,数据会通过上面的回调函数返回
    #wx_inst.update_frinds()


if __name__ == '__main__':
    main()

运行

python test.py

到此,您可以与指定对象愉快的聊天了~

与其他用户在线聊天的思路:

  1. receive_wechat_id 改为 receive_wechat_ids ,存放您想对话的用户wechat ID 和 用户姓名
  2. 增加聊天对象选择,去掉默认聊天对象,选择后可开始聊天或切换与其他用户聊天
  3. 增加判断接收到的信息来源是否 在receive_wechat_ids里
    3.1 如果是,则增加选择是否立即回复该用户,若输入的关键字不是立即回复则与当前用户继续聊天
    3.2 如果不是,则让用户选择是否添加当前发送信息的用户到 receive_wechat_ids 列表,若输入的关键词不是添加则与当前用户继续聊天
    若用户选择添加则让用户选择是否立即回复当前发送信息的用户,同3.1处理
  4. 可以选择发送图片,链接等,具体参考源码,不过个人感觉比较麻烦,可以通过判断 输入文字开头是否是系统盘或HTTP让系统自动识别发送文字还是图片/链接,而不需要用户选择发送图片,链接。

PS: 为什么搞这个东西?
上班时聊天不用打开微信啊。还可以捕获重要人的信息。而且他撤回的信息也可以看到(除非不是文字了)。

posted @ 2020-12-31 11:28  Tester-Dolores  阅读(3331)  评论(0编辑  收藏  举报