Giter VIP home page Giter VIP logo

pywechatspy's Introduction

PyWeChatSpy

help people make better use of WeChatForPC

相关文章:硬核WeChatBot

支持微信版本

3.0.0.57

微信客户端下载:https://pan.baidu.com/s/1FIHQ4BCkpTSC-7QHk13LHw 提取码: v2n3

功能列表

基础功能

  • 推送聊天消息 CHAT_MESSAGE
  • 获取登录账号信息 get_account_details
  • 发送文本 send_text
    • 入参
      • wxid 文本消息接收方wxid
      • text 文本内容
      • at_wxid 需要被@的wxid(仅限群聊) at几个人,文本里就需要出现几个'@'符号 spy.send_text('xxxx@chatroom', '@0000 @1111 Hello World', 'wxid_xxxx,wxid_yyyy')
  • 发送文件、图片 send_file
    • 入参
      • wxid 文件接收方wxid
      • file_path 文件路径
  • 解密微信图片文件 decrypt_image(微信的图片下载到本地是加密的,需要使用此方法解密后方能看到图片原始内容)
    • 入参
      • source_file 带解密图片文件
      • target_file 解密后图片保存路径

高级功能

  • 获取联系人列表 get_contacts(获取所有联系人,包括好友与群,不活跃的群可能无法获取)
    • 回调类型 CONTACTS_LIST
    • 回调结构 Contacts
  • 获取联系人详情、群成员列表 get_contact_details
    • 入参
      • 联系人wxid
    • 回调类型 CONTACT_DETAILS
    • 回调结构 Contacts
  • 发送群公告 send_announcement
    • 入参
      • wxid 群wxid
      • content 公告内容
  • 自动通过好友请求 accept_new_contact
    • 入参
      • encryptusername 好友请求Xml消息结构体同名字段值
      • ticket 好友请求Xml消息结构体同名字段值
  • 设置联系人备注 set_remark
    • 入参
      • wxid 联系人wxid
      • remark 备注内容
  • 分享群聊 share_chatroom
    • 入参
      • chatroom_wxid 待分享群聊wxid
      • wxid 联系人wxid
  • 移除群成员 remove_chatroom_member
    • 入参
      • chatroom_wxid 待移除成员群聊wxid
      • wxid 待移除群聊成员wxid
  • 移除联系人 remove_contact
    • 入参
      • wxid 待移除联系人wxid
  • 发送小程序 send_mini_program
    • 入参
      • wxid 接收方wxid
      • title 小程序标题
      • image_path 小程序封面
      • route 小程序跳转路由,抓包小程序消息获取pagepath或自行生成
      • app_id 小程序AppId
      • username 小程序源Id
      • weappiconurl 小程序图标url
      • appname 小程序名称
  • 发送链接卡片 send_link_card
    • 入参
      • wxid 接收方wxid
      • title 卡片标题
      • desc 卡片描述
      • app_id 卡片AppId
      • url 卡片跳转url
      • image_path 卡片封面图片路径
  • 创建群聊 create_chatroom
    • 入参
      • wxid 创建群聊拉取的联系人wxid,不包括自己,至少连个,英文逗号分隔
    • 回调结构 CreateGroupCallback
  • 设置群名称 set_chatroom_name
    • 入参
      • wxid 待改名群聊wxid
      • name 群聊名称
  • 推送群成员详情 GROUP_MEMBER_DETAILS
  • 推送群成员变动(进群&退群) GROUP_MEMBER_EVENT
  • 获取登录二维码 get_login_qrcode
  • 发送个人名片 send_card
    • 入参
      • wxid 名片接收wxid
      • card_wxid 名片wxid
      • card_nickname 名片显示昵称

数据结构

登录信息 AccountDetails account_details = spy_pb2.AccountDetails()

  • wxid 登录账号wxid account_details.wxid
  • nickname 登录账号昵称 account_details.nickname
  • wechatid 登录账号微信号 account_details.wechatid
  • autograph 登录账号签名 account_details.autograph
  • profilePhotoHD 登录账号高清头像 account_details.profilePhotoHD
  • profilePhoto 登录账号头像 account_details.profilePhoto
  • phone 登录账号绑定手机号 account_details.phone
  • email 登录账号绑定邮箱 account_details.email
  • qq 登录账号绑定QQ account_details.qq
  • sex 登录账号性别 1男/2女 account_details.sex
  • city 登录账号所在城市 account_details.city
  • province 登录账号所在省份 account_details.province
  • country 登录账号所在国家 account_details.country

Contacts 联系人列表 contacts_list = spy_pb2.Contacts()

  • contactDetails 联系人详情(可遍历) for contact in contacts_list.contactDetails
    • wxid 联系人wxid结构 contact.wxid
      • str 联系人wxid contact.wxid.str
    • nickname 联系人昵称结构 contact.nickname
      • str 联系人昵称 contact.nickname.str
    • sex 联系人性别 1男/2女 contact.sex
    • remark 联系人备注结构 contact.remark
      • str 联系人备注 contact.remark.str
    • wechatId 联系人微信号 contact.wechatId
    • groupOwnerWxid 群主wxid(如果联系人是群聊 wxid以"@chatroom"结尾) cotact.groupOwnerWxid
    • profilePhotoHD 联系人高清头像 cotact.profilePhotoHD
    • profilePhoto 联系人头像 contact.profilePhoto
    • groupMemberList 群成员列表(如果联系人是群聊 wxid以"@chatroom"结尾) contact.groupMemberList
      • memberCount 群成员数量 contact.groupMemberList.memberCount
      • groupMember 群成员信息(可遍历) for member in contacts_list.contactDetails.groupMemberList.groupMember
        • wxid 群成员wxid member.wxid
        • nickname 群成员昵称 member.nickname

ChatMessage 微信消息 chat_message = spy_pb2.ChatMessage()

  • message 微信消息(可遍历) for message in chat_message.message
    • wxidFrom 消息发送方wxid结构 message.wxidFrom
      • str 消息发送方wxid message.wxidFrom.str
    • wxidTo 消息接收方wxid结构 message.wxidTo
      • str 消息接收方 message.wxidTo.str
    • type 消息类型 1文本3图片43视频49Xml37好友请求10000系统消息... message.type
    • content 消息内容结构 message.content
      • str 消息内容 message.content.str
    • timestamp 消息时间戳 message.timestamp
    • head 消息头 message.head
    • file 消息附带文件(图片、视频等) message.file

GroupMemberDetails 群成员详情 group_member_details = spy_pb2.GroupMemberDetails()

  • wxid 群wxid group_member_details.wxid
  • detailsCount 详情数量(非群成员数量) group_member_details.detailsCount
  • groupMemberDetails 群成员详情(可遍历) for member_details in group_member_details.groupMemberDetails
    • wxid 群成员wxid member_details.wxid
    • nickname 群成员昵称 member_details.nickname
    • groupNickname 群成员群内昵称 member_details.groupNickname
    • profilePhotoHD 群成员高清头像 member_details.profilePhotoHD
    • profilePhoto 群成员头像 member_details.profilePhoto
    • inviterWxid 群成员邀请人wxid member_details.inviterWxid

GroupMemberEvent 群成员变动事件 group_member_event = spy_pb2.GroupMemberEvent()

  • wxid 群wxid group_member_event.wxid
  • wxidJoin 进群wxid(可遍历) for _join in group_member_event.wxidJoin
  • wxidLeave 退群wxid(可遍历) for _leave in group_member_event.wxidLeave

CreateGroupCallback 创建群聊回调 callback = spy_pb2.CreateGroupCallback()

  • wxid 群聊wxid结构 callback.wxid
    • str 群聊wxid callback.wxid.str

LoginQRCode 登录二维码 qrcode = spy_pb2.LoginQRCode()

  • qrcodeSize 二维码大小 qrcode.qrcodeSize
  • qrcodeBytes 二维码数据 qrcode.qrcodeBytes

例子

一、本地运行

示例代码见example.py

二、HTTP调用服务端

示例代码见 service_example.pyclient_example.py

三、远程过程调用(RPC)

起作用的有4个额外文件:

  • example_rpc_server.py
  • example_rpc_client.py
  • rpc_server_tools.py
  • rpc_client_tools.py

使用方法:

  1. 运行服务端 example_rpc_server.py 启动微信
  2. 运行客户端 example_rpc_client.py 接收并处理消息

注意:例子中,客户端和服务端在一台机子上,所以监听的ip是127.0.0.1,如果将客户端放到其他机器,请填写实际服务端对应的ip,出现端口冲突的话也可以灵活更改端口,并配置对应服务器防火墙放行

四、其他例子

待补充,欢迎大家贡献!

pywechatspy's People

Contributors

coolmian avatar veikai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pywechatspy's Issues

窗口不能捕获

代码运行会出现窗口不能捕获问题,修改版本和管理权限都不能解决问题。

接受好友请求没报错也没反应是什么原因呢

xmlStr = data["content"]
doc = etree.XML(xmlStr)
from_wxid = doc.xpath("//msg/@fromusername")[0]
source_wxid = doc.xpath("//msg/@sourceusername")[0]
ticket =  doc.xpath("//msg/@ticket")[0]
encryptusername = doc.xpath("//msg/@encryptusername")[0]
#print("from_wxid = " + from_wxid + " source_wxid = " + source_wxid + " ticket= " + ticket + " encryptusername =" +encryptusername)
spy.accept_new_contact(encryptusername, ticket)

请问get_contact_details该如何调用

试了试这个函数返回的是NoneType,但是在spy.py的第108行:
socket_client.send(data_length_bytes + data)
将查询到的信息直接输出了,但不清楚该怎么调用。
请问有没有办法让查询到的信息成为一个字典或者列表方便后续调用?

有效,但是奔溃了,使用方式不对,还是什么?

使用的是你提供的微信版本 2.8.0,已关闭自动更新

未能保存日志文件。

提示 WeChatSpy.dll 错误

未上报,微信是否真的不上报,上报了,是不是大概率被封号?

  • 关闭程序是否 unhook?
  • 多次启动关闭会导致什么问题?
  • 同时启动多个会导致什么问题?

send_text代码导致微信程序直接崩

为什么我这么写 微信程序直接崩了,可否程序不崩,只提示提示错误,以免一个错误导致程序退出请求,谢谢
spy.send_text(_from, "@wxid_2vecjpe3q35q22 @wxid_traz0579m4gt22 12345", "wxid_2vecjpe3q35q22,wxid_traz0579m4gt22")

image

大佬看下这个报错

Traceback (most recent call last):
File "E:/360/wechat/wechat.py", line 1, in
from PyWeChatSpy import WeChatSpy
File "E:\360\wechat\venv\lib\site-packages\PyWeChatSpy_init_.py", line 1, in
from .spy import WeChatSpy
File "E:\360\wechat\venv\lib\site-packages\PyWeChatSpy\spy.py", line 97
elif not (socket_client := self.__port2client.get(port)):
^
SyntaxError: invalid syntax

ModuleNotFoundError: No module named 'google'

使用 pip install google 不能解决,不是很清楚这个包的作用,如果是从Google官网下载 ‘protocolbuffers/protobuf‘ 则会缺失‘google.protobuf.descriptor’

最近总是联系不上是不是微信被封了呀

最近在测试 HTTP调用服务端 的例子,发现配置了消息回调,不生效,另外例子接口也不完整,有没有完整版的服务端代码。可以另外付费。怎么联系?用QQ?

PyWeChatSpy study problems

data["type"]==1怎么才会触发,
我使用了spy.query_login_info(),他就一直循环输出我的信息,怎么才可以暂停

无法踢出群成员和删除联系人

你好,情况如下
入参 群id:24185298116@chatroom 微信id: wxid_ne984zmk4dox12
踢出群成员提示 REMOVE_GROUP(CHATROOM)_MEMBER is not available
删除联系人提示REMOVE_CONTACT is not available
issu

如何安装PyWeChatSpy

我在Anaconda下想要安装PyWeChatSpy,但是一直安装不上,python=3.8。请问大家是如何安装的呢?谢谢

请问支持语音消息吗?

你好,我在其他消息里输出,语音消息体为以下,请问如何可以获取和发送语音信息呢?

---------- 其他消息 ----------
type: 34
self: 0
head: "\n"
wxid1: "winson_law"
wxid2: "winson_law"
content: "<voicemsg endflag="1" length="12507" voicelength="11566" clientmsgid="4166663964383637313635646462310042093309152022a00d1fc49100" fromusername="XXXXXX" downcount="0" cancelflag="0" voiceformat="4" forwardflag="0" bufid="937456541697245830" />"

请问Get_Contacts如何调用?

模仿get_account_info做下面的修改,但是似乎client2contacts总是空的,即便loop了50秒

请问是因为contacts的list太长了吗?

elif data.type == ACCOUNT_DETAILS:
    self.client2account[data.port] = data.bytes
elif data.type == CONTACTS_LIST:
    self.client2contacts[data.port] = data.bytes
@app.route("/get_contacts/<int:port>")
@verify_port
def get_contacts(port):
    app.spy.get_contacts(port)
    ret = []
    for i in range(100):
        if contacts_data := app.client2contacts.get(port):
            contact_list = spy_pb2.Contacts()
            contact_list.ParseFromString(contacts_data)
            for contact in contact_list.contactDetails:
                ret.append(jsonify({
                    "code": 1,
                    "wxid": contact.wxid,
                    "nickname": contact.nickname,
                    "remark": contact.remark,
                    "sex": contact.sex,
                    "city": contact.city,
                    "province": contact.province,
                    "country": contact.country
                }))

            return "{" + ", ".join(ret) +  "}"
        sleep(0.5)

    return jsonify({"code": 0, "msg": "contact info not found"})

是否可在Windows服务器上运行?

在笔记本win10家庭版上是正常使用。在服务器上配置运行example.py后微信正常登录,但是终端不能打印出消息。
操作系统: Windows Server 2019 数据中心版 64位 中文版 跟2016版本
厂商:腾讯云
github下载了今天的代码和教程链接里的微信3.0.0.57。
python:3.8.6 64位
谢谢!

【bug】@效果只有第一调用有效

send_text接口 @群里某人时 只有第一次有@的效果,第二次调用接口就无效了。重开程序后第一次再次有效果,只有继续没效果了。

hello

你好,请问怎么收费

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.