2023-10-07 15:29:50 +08:00
|
|
|
|
# WcfAuto 客户端(基于 python 客户端)
|
|
|
|
|
[](https://pypi.python.org/pypi/wcferry) [](https://pypi.python.org/pypi/wcferry) [](https://wechatferry.readthedocs.io/zh/latest/?badge=latest)
|
|
|
|
|
|
|
|
|
|
|[📖 文档](https://wechatferry.readthedocs.io/)|[📺 视频教程](https://mp.weixin.qq.com/s/APdjGyZ2hllXxyG_sNCfXQ)|[🙋 FAQ](https://mp.weixin.qq.com/s/vAGpn1C9stI8Xzt1hUJhLA)|
|
|
|
|
|
|:-:|:-:|:-:|
|
|
|
|
|
|
|
|
|
|
🤖示例机器人框架:[WeChatRobot](https://github.com/lich0821/WeChatRobot)。
|
|
|
|
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
```sh
|
|
|
|
|
pip install --upgrade wcfauto
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Demo:
|
|
|
|
|
```py
|
2023-10-04 21:55:43 +08:00
|
|
|
|
#! /usr/bin/env python3
|
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
|
|
import logging
|
|
|
|
|
from time import sleep
|
2023-10-07 17:03:01 +08:00
|
|
|
|
from wcfauto import Register, Wcf, WxMsg
|
2023-10-04 21:55:43 +08:00
|
|
|
|
|
|
|
|
|
logging.basicConfig(level='DEBUG', format="%(asctime)s %(message)s")
|
|
|
|
|
LOG = logging.getLogger("Demo")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
|
receiver = Register()
|
2023-10-07 15:29:50 +08:00
|
|
|
|
|
2023-10-04 21:55:43 +08:00
|
|
|
|
@receiver.message_register(isDivision=True, isGroup=True, isPyq=False)
|
|
|
|
|
def process_msg(bot: Wcf, msg: WxMsg):
|
|
|
|
|
"""
|
|
|
|
|
同步消息函数装饰器
|
|
|
|
|
"""
|
|
|
|
|
LOG.info(f"收到消息: {msg}")
|
2023-10-07 15:29:50 +08:00
|
|
|
|
|
2023-10-04 21:55:43 +08:00
|
|
|
|
sleep(5) # 等微信加载好,以免信息显示异常
|
|
|
|
|
LOG.info(f"已经登录: {True if bot.is_login() else False}")
|
|
|
|
|
LOG.info(f"wxid: {bot.get_self_wxid()}")
|
2023-10-07 15:29:50 +08:00
|
|
|
|
|
2023-10-04 21:55:43 +08:00
|
|
|
|
# bot.disable_recv_msg() # 当需要停止接收消息时调用
|
|
|
|
|
sleep(5)
|
|
|
|
|
ret = bot.send_text("Hello world.", "filehelper")
|
|
|
|
|
LOG.info(f"send_text: {ret}")
|
2023-10-07 15:29:50 +08:00
|
|
|
|
|
2023-10-04 21:55:43 +08:00
|
|
|
|
sleep(5)
|
|
|
|
|
# 需要确保图片路径正确,建议使用绝对路径(使用双斜杠\\)
|
2023-10-07 15:29:50 +08:00
|
|
|
|
ret = bot.send_image(
|
|
|
|
|
"https://raw.githubusercontent.com/lich0821/WeChatFerry/master/assets/QR.jpeg", "filehelper")
|
2023-10-04 21:55:43 +08:00
|
|
|
|
LOG.info(f"send_image: {ret}")
|
2023-10-07 15:29:50 +08:00
|
|
|
|
|
2023-10-04 21:55:43 +08:00
|
|
|
|
sleep(5)
|
|
|
|
|
# 需要确保文件路径正确,建议使用绝对路径(使用双斜杠\\)
|
|
|
|
|
ret = bot.send_file("https://raw.githubusercontent.com/lich0821/WeChatFerry/master/README.MD", "filehelper")
|
|
|
|
|
LOG.info(f"send_file: {ret}")
|
2023-10-07 15:29:50 +08:00
|
|
|
|
|
2023-10-04 21:55:43 +08:00
|
|
|
|
sleep(5)
|
|
|
|
|
LOG.info(f"Message types:\n{bot.get_msg_types()}")
|
|
|
|
|
LOG.info(f"Contacts:\n{bot.get_contacts()}")
|
2023-10-07 15:29:50 +08:00
|
|
|
|
|
2023-10-04 21:55:43 +08:00
|
|
|
|
sleep(5)
|
|
|
|
|
LOG.info(f"DBs:\n{bot.get_dbs()}")
|
|
|
|
|
LOG.info(f"Tables:\n{bot.get_tables('db')}")
|
|
|
|
|
LOG.info(f"Results:\n{bot.query_sql('MicroMsg.db', 'SELECT * FROM Contact LIMIT 1;')}")
|
2023-10-07 15:29:50 +08:00
|
|
|
|
|
2023-10-04 21:55:43 +08:00
|
|
|
|
# 需要真正的 V3、V4 信息
|
|
|
|
|
# bot.accept_new_friend("v3", "v4")
|
2023-10-07 15:29:50 +08:00
|
|
|
|
|
2023-10-04 21:55:43 +08:00
|
|
|
|
# 添加群成员,填写正确的群 ID 和成员 wxid
|
|
|
|
|
# ret = bot.add_chatroom_members("chatroom id", "wxid1,wxid2,wxid3,...")
|
|
|
|
|
# LOG.info(f"add_chatroom_members: {ret}")
|
2023-10-07 15:29:50 +08:00
|
|
|
|
|
2023-10-04 21:55:43 +08:00
|
|
|
|
# 删除群成员,填写正确的群 ID 和成员 wxid
|
|
|
|
|
# ret = bot.del_chatroom_members("chatroom id", "wxid1,wxid2,wxid3,...")
|
|
|
|
|
# LOG.info(f"add_chatroom_members: {ret}")
|
2023-10-07 15:29:50 +08:00
|
|
|
|
|
2023-10-04 21:55:43 +08:00
|
|
|
|
sleep(5)
|
|
|
|
|
bot.refresh_pyq(0) # 刷新朋友圈第一页
|
|
|
|
|
# bot.refresh_pyq(id) # 从 id 开始刷新朋友圈
|
|
|
|
|
|
|
|
|
|
@receiver.async_message_register()
|
|
|
|
|
async def async_process_msg(bot: Wcf, msg: WxMsg):
|
|
|
|
|
"""
|
|
|
|
|
异步消息函数装饰器
|
|
|
|
|
"""
|
|
|
|
|
print(msg)
|
2023-10-08 22:02:57 +08:00
|
|
|
|
|
|
|
|
|
@receiver.group_changed_register(allow_other_receive=False)
|
|
|
|
|
async def group_changed(bot: Wcf, msg: WxMsg):
|
|
|
|
|
"""
|
|
|
|
|
群组信息变化函数装饰器
|
|
|
|
|
"""
|
|
|
|
|
print(msg)
|
|
|
|
|
|
|
|
|
|
@receiver.revoke_message_register(allow_other_receive=False)
|
|
|
|
|
async def group_changed(bot: Wcf, msg: WxMsg):
|
|
|
|
|
"""
|
|
|
|
|
撤回消息函数装饰器
|
|
|
|
|
"""
|
|
|
|
|
print(msg)
|
2023-10-08 22:41:25 +08:00
|
|
|
|
print(msg.get_revoke_msg())
|
2023-10-08 22:02:57 +08:00
|
|
|
|
|
|
|
|
|
def judge(msg: WxMsg):
|
|
|
|
|
"""
|
|
|
|
|
消息判断函数
|
|
|
|
|
"""
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@receiver.custom_message_register(register_name='custom', msg_judge_func=judge, allow_other_receive=False)
|
|
|
|
|
async def group_changed(bot: Wcf, msg: WxMsg):
|
|
|
|
|
"""
|
|
|
|
|
自定义消息接收函数装饰器
|
|
|
|
|
"""
|
|
|
|
|
print(msg)
|
2023-10-04 21:55:43 +08:00
|
|
|
|
|
|
|
|
|
# 开始接受消息
|
|
|
|
|
receiver.run()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
main()
|
2023-10-07 15:29:50 +08:00
|
|
|
|
|
2023-10-08 22:02:57 +08:00
|
|
|
|
|
2023-10-07 15:29:50 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|:-:|:-:|
|
2024-02-18 16:47:56 +08:00
|
|
|
|
|后台回复 `WCF` 加群交流|如果你觉得有用|
|