WeChatFerry/python
2023-02-27 23:46:41 +08:00
..
wcferry Add queue to avoid losing message 2023-02-27 23:36:17 +08:00
demo.py Refacotring 2023-02-27 23:45:39 +08:00
MANIFEST.in Update python client 2023-02-25 21:58:00 +08:00
README.MD Update demo 2023-02-27 23:46:41 +08:00
setup.py Update python client 2023-02-25 21:58:00 +08:00

WeChatFerry Python 客户端

⚠️ 只支持 Windows ⚠️

快速开始

pip install wcferry

参考 Demo

#! /usr/bin/env python3
# -*- coding: utf-8 -*-

import logging
from threading import Thread

from wcferry import Wcf

logging.basicConfig(level='DEBUG', format="%(asctime)s %(message)s")
LOG = logging.getLogger("Demo")


def process_msg(wcf: Wcf):
    """处理接收到的消息"""
    while wcf.is_receiving_msg():
        try:
            msg = wcf.get_msg()
        except Exception as e:
            continue

        LOG.info(msg)  # 简单打印


def main():
    LOG.info("Start demo...")
    wcf = Wcf(debug=True)             # 默认连接本地服务
    # wcf = Wcf("tcp://127.0.0.1:10086") # 连接远端服务

    LOG.info(f"已经登录: {True if wcf.is_login() else False}")
    LOG.info(f"wxid: {wcf.get_self_wxid()}")

    # 允许接收消息
    # wcf.enable_recv_msg(LOG.info) # deprecated

    # 允许接收消息
    wcf.enable_receiving_msg()
    Thread(target=process_msg, name="GetMessage", args=(wcf,), daemon=True).start()

    # wcf.disable_recv_msg() # 当需要停止接收消息时调用

    ret = wcf.send_text("Hello world.", "filehelper")
    LOG.info(f"send_text: {ret}")

    ret = wcf.send_image("TEQuant.jpeg", "filehelper")
    LOG.info(f"send_image: {ret}")

    LOG.info(f"Message types:\n{wcf.get_msg_types()}")
    LOG.info(f"Contacts:\n{wcf.get_contacts()}")

    LOG.info(f"DBs:\n{wcf.get_dbs()}")
    LOG.info(f"Tables:\n{wcf.get_tables('db')}")
    LOG.info(f"Results:\n{wcf.query_sql('MicroMsg.db', 'SELECT * FROM Contact LIMIT 1;')}")

    # wcf.accept_new_friend("v3", "v4") # 需要真正的 V3、V4 信息

    # 一直运行
    wcf.keep_running()


if __name__ == "__main__":
    main()

一起开发

配置环境

# 创建虚拟环境
python -m venv .env
# 激活虚拟环境
source .env/Scripts/activate
# 升级 pip
pip install --upgrade pip
# 安装依赖包
pip install grpcio-tools pynng

重新生成 PB 文件

cd python\wcferry
python -m grpc_tools.protoc --python_out=. --proto_path=..\..\rpc\proto\ wcf.proto

参考项目 README