wxhook/README.md
2024-05-06 16:28:29 +08:00

187 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# WxHook
## 简介
WxHook是一个基于dll注入实现的python微信机器人框架支持多种接口、高扩展性、多线程消息处理让你轻松应对海量消息为你的需求实现提供便捷灵活的支持。
支持的接口
1. hook同步消息
2. 取消hook同步消息
3. hook日志
4. 取消hook日志
5. 检查登录状态
6. 获取用户信息
7. 发送文本消息
8. 发送图片消息
9. 发送文件消息
10. 发送表情消息
11. 发送小程序消息
12. 发送群@消息
13. 发送拍一拍消息
14. 获取联系人列表
15. 获取联系人详情
16. 创建群聊
17. 退出群聊
18. 获取群详情
19. 获取群成员列表
20. 添加群成员
21. 删除群成员
22. 邀请群成员
23. 修改群成员昵称
24. 设置群置顶消息
25. 移除群置顶消息
26. 转发消息
27. 获取朋友圈首页
28. 获取朋友圈下一页
29. 收藏消息
30. 收藏图片
31. 下载附件
32. 转发公众号消息
33. 转发公众号消息通过消息ID
34. 解码图片
35. 获取语音通过消息ID
36. 图片文本识别
37. 获取数据库句柄
38. 执行SQL命令
39. 测试
## 微信版本下载
- [WeChatSetup3.9.5.81.exe](https://github.com/tom-snow/wechat-windows-versions/releases/download/v3.9.5.81/WeChatSetup-3.9.5.81.exe)
## 安装
```bash
pip install wxhook
```
## 使用示例
消息事件处理例子
```python
# import os
# os.environ["WXHOOK_LOG_LEVEL"] = "INFO" # 修改日志输出级别
from wxhook import Bot
from wxhook import events
from wxhook.model import Event
def on_login(bot: Bot):
print("登录成功之后会触发这个函数")
def on_start(bot: Bot):
print("微信客户端打开之后会触发这个函数")
def on_stop(bot: Bot):
print("关闭微信客户端之前会触发这个函数")
def on_before_message(bot: Bot, event: Event):
print("消息事件处理之前")
def on_after_message(bot: Bot, event: Event):
print("消息事件处理之后")
bot = Bot(
# faked_version="3.9.10.19", # 解除微信低版本限制
on_login=on_login,
on_start=on_start,
on_stop=on_stop,
on_before_message=on_before_message,
on_after_message=on_after_message
)
# 消息回调地址
# bot.set_webhook_url("http://127.0.0.1:8000")
@bot.handle(events.TEXT_MESSAGE)
def on_message(bot: Bot, event: Event):
bot.send_text("filehelper", "hello world!")
bot.run()
```
接口使用例子
```python
import os
import json
from wxhook import Bot
from wxhook import events
from wxhook.model import Event
# faked_version="3.9.10.19"解除微信低版本登录限制
bot = Bot()
msgid_list = []
@bot.handle(events.TEXT_MESSAGE)
def on_text_message(bot: Bot, event: Event):
self_id = bot.info.wxid
content = event.content
sender = event.fromUser
msg_id = event.msgId
if sender != self_id:
if content.find("发送文本") != -1:
bot.send_text(sender, "这是一条文本消息")
elif content.find("发送图片") != -1:
bot.send_image(sender, os.path.abspath("test.png"))
elif content.find("发送表情") != -1:
bot.send_emotion(sender, os.path.abspath("test.png"))
elif content.find("发送文件") != -1:
print(print(bot.send_file(sender, os.path.abspath("test.xlsx"))))
elif content.find("发送音频") != -1:
bot.send_file(sender, os.path.abspath("test.mp3"))
elif content.find("发送视频") != -1:
print(bot.send_file(sender, os.path.abspath("test.mp4")))
elif content.find("创建群聊") != -1:
bot.create_room(["wxid1", "wxid2"])
elif content.find("获取群成员列表") != -1:
print(bot.get_room_members("<chatroomid>"))
elif content.find("删除群成员") != -1:
bot.delete_room_member("<chatroomid>", ["<wxid>"])
elif content.find("添加群成员") != -1:
bot.add_room_member("<chatroomid>", ["<wxid>"])
elif content.find("邀请群成员") != -1:
bot.invite_room_member("<chatroomid>", ["<wxid>"])
elif content.find("修改在群聊中的昵称") != -1:
print(bot.modify_member_nickname(sender, "<self-wxid>", "测试机器人"))
elif content.find("退出群聊") != -1:
bot.quit_room("<chatroomid>")
elif content.find("at全体成员") != -1:
bot.send_room_at(sender, ["notify@all", "<wxid>"], "这是一条at全体成员的消息")
elif content.find("发送群at") != -1:
bot.send_room_at(sender, ["<wxid1>", "<wxid2>"], "这是一条at群成员的消息")
elif content.find("发送群聊拍一拍") != -1:
bot.send_pat(sender, "wxid_vqj81fdula0x22")
elif content.find("发送私聊拍一拍") != -1:
bot.send_pat(sender, sender)
elif content.find("置顶消息") != -1:
bot.top_msg(msg_id)
msgid_list.append(msg_id)
elif content.find("取消置顶的消息") != -1:
bot.remove_top_msg(sender, msgid_list.pop())
elif content.find("获取联系人列表") != -1:
bot.send_text(sender, json.dumps(bot.get_contacts()))
elif content.find("获取联系人详情") != -1:
bot.send_text(sender, json.dumps(bot.get_contact("<wxid>")))
elif content.find("获取群详情") != -1:
print(bot.get_room("<chatroomid>"))
elif content.find("收藏消息") != -1:
bot.collect_msg(msg_id)
elif content.find("收藏图片") != -1:
bot.collect_image(sender, os.path.abspath("test.png"))
elif content.find("ocr") != -1:
print(bot.ocr(os.path.abspath("test.png")))
bot.run()
```
QQ交流群:625920216