zoukankan      html  css  js  c++  java
  • 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("请输入回复内容:
    ")
                        with open('zhlmsg.txt', 'a+') as f:  # 设置文件对象
                            f.write(msg["remark_name"]+"   "+msg_data['time']+"
    ")
                            f.write(msg_data["msg"]+"
    ")
                    else:
                        with open('zhlmsg.txt', 'a+') as f:  # 设置文件对象
                            f.write("您自己   "+msg_data['time']+"
    ")
                            f.write(msg_data["msg"]+"
    ")
                else:
                    print("=========================================================")
                    print("您收到的是其他人的信息:
    【{}】
    ".format(msg_data["msg"][0:50]))
                    if len(msg_data['msg'])>50:
                        print("对方发送的消息很长,请到微信进行查看!
    ")
                    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 退出聊天】您可以继续与【{}】聊天:
    ".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 退出聊天】请输入您要发送给【{}】的信息:
    ".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: 为什么搞这个东西?
    上班时聊天不用打开微信啊。还可以捕获重要人的信息。而且他撤回的信息也可以看到(除非不是文字了)。

  • 相关阅读:
    颜色空间RGB与HSV(HSL)的转换
    表示数值的字符串
    正则表达式匹配
    构建乘积数组
    Linux以百万兆字节显示内存大小
    OCP-1Z0-051-题目解析-第26题
    2014华为机试(一)
    android Manifest.xml选项
    TXT小说朗读正式版
    Codeforces Round #256 (Div. 2) B. Suffix Structures
  • 原文地址:https://www.cnblogs.com/Tester_Dolores/p/14215323.html
Copyright © 2011-2022 走看看