version 0.0.2

This commit is contained in:
张明明 2024-05-05 11:02:41 +08:00
parent 86adcc7152
commit a9fcc7a0c0
4 changed files with 23 additions and 19 deletions

View File

@ -2,7 +2,7 @@
## 简介 ## 简介
WxHook是一个基于dll注入实现的python微信机器人框架支持多种接口、高扩展性、多线程事件高并发,让你轻松应对海量消息,为你的需求实现提供便捷灵活的支持。 WxHook是一个基于dll注入实现的python微信机器人框架支持多种接口、高扩展性、多线程消息处理,让你轻松应对海量消息,为你的需求实现提供便捷灵活的支持。
支持的接口 支持的接口
1. hook同步消息 1. hook同步消息

View File

@ -18,7 +18,7 @@ URL = 'https://github.com/miloira/wxhook'
EMAIL = '690126048@qq.com' EMAIL = '690126048@qq.com'
AUTHOR = 'Msky' AUTHOR = 'Msky'
REQUIRES_PYTHON = '>=3.8.0' REQUIRES_PYTHON = '>=3.8.0'
VERSION = '0.0.1' VERSION = '0.0.2'
# What packages are required for this module to be executed? # What packages are required for this module to be executed?
REQUIRED = [ REQUIRED = [

View File

@ -1,3 +1,3 @@
from .core import Bot from .core import Bot
version = "0.0.1" version = "0.0.2"

View File

@ -1,12 +1,12 @@
import os import os
import json import json
import typing import typing
import traceback
import socketserver
from functools import lru_cache
import psutil import psutil
import pyee import pyee
import traceback
import socketserver
import requests import requests
from .events import ALL_MESSAGE, SYSTEM_MESSAGE from .events import ALL_MESSAGE, SYSTEM_MESSAGE
@ -62,8 +62,8 @@ class Bot:
self.remote_port, self.server_port = self.wechat_manager.get_port() self.remote_port, self.server_port = self.wechat_manager.get_port()
self.BASE_URL = f"http://{self.remote_host}:{self.remote_port}" self.BASE_URL = f"http://{self.remote_host}:{self.remote_port}"
self.webhook_url = None self.webhook_url = None
self.info = None
self.DATA_SAVE_PATH = None self.DATA_SAVE_PATH = None
self.WXHELPER_PATH = None
self.FILE_SAVE_PATH = None self.FILE_SAVE_PATH = None
self.IMAGE_SAVE_PATH = None self.IMAGE_SAVE_PATH = None
self.VIDEO_SAVE_PATH = None self.VIDEO_SAVE_PATH = None
@ -93,12 +93,11 @@ class Bot:
def init_bot(self, bot: "Bot", event: Event) -> None: def init_bot(self, bot: "Bot", event: Event) -> None:
if event.content["sysmsg"]["@type"] == "SafeModuleCfg": if event.content["sysmsg"]["@type"] == "SafeModuleCfg":
bot.info = bot.get_self_info()
self.DATA_SAVE_PATH = bot.info.dataSavePath self.DATA_SAVE_PATH = bot.info.dataSavePath
self.FILE_SAVE_PATH = os.path.join(self.DATA_SAVE_PATH, "wxhelper/file") self.WXHELPER_PATH = os.path.join(self.DATA_SAVE_PATH, "wxhelper")
self.IMAGE_SAVE_PATH = os.path.join(self.DATA_SAVE_PATH, "wxhelper/image") self.FILE_SAVE_PATH = os.path.join(self.WXHELPER_PATH, "file")
self.VIDEO_SAVE_PATH = os.path.join(self.DATA_SAVE_PATH, "wxhelper/video") self.IMAGE_SAVE_PATH = os.path.join(self.WXHELPER_PATH, "image")
logger.info(bot.info) self.VIDEO_SAVE_PATH = os.path.join(self.WXHELPER_PATH, "video")
self.call_hook_func(self.on_login, bot) self.call_hook_func(self.on_login, bot)
def set_webhook_url(self, webhook_url: str) -> None: def set_webhook_url(self, webhook_url: str) -> None:
@ -115,12 +114,12 @@ class Bot:
return requests.request("POST", self.BASE_URL + api, *args, **kwargs).json() return requests.request("POST", self.BASE_URL + api, *args, **kwargs).json()
def hook_sync_msg( def hook_sync_msg(
self, self,
ip: str, ip: str,
port: int, port: int,
enable_http: int = 0, enable_http: int = 0,
url: str = "http://127.0.0.1:8000", url: str = "http://127.0.0.1:8000",
timeout: int = 30 timeout: int = 30
) -> Response: ) -> Response:
"""hook同步消息""" """hook同步消息"""
data = { data = {
@ -148,6 +147,7 @@ class Bot:
"""检查登录状态""" """检查登录状态"""
return Response(**self.call_api("/api/checkLogin")) return Response(**self.call_api("/api/checkLogin"))
@lru_cache
def get_self_info(self) -> Account: def get_self_info(self) -> Account:
"""获取用户信息""" """获取用户信息"""
return Account(**self.call_api("/api/userInfo")["data"]) return Account(**self.call_api("/api/userInfo")["data"])
@ -234,7 +234,7 @@ class Bot:
data = { data = {
"wxid": wxid "wxid": wxid
} }
return ContactDetail(self.call_api("/api/getContactProfile", json=data)["data"]) return ContactDetail(**self.call_api("/api/getContactProfile", json=data)["data"])
def create_room(self, member_ids: list[str]) -> Response: def create_room(self, member_ids: list[str]) -> Response:
"""创建群聊""" """创建群聊"""
@ -423,6 +423,10 @@ class Bot:
"""测试""" """测试"""
return Response(**self.call_api("/api/test")) return Response(**self.call_api("/api/test"))
@property
def info(self) -> Account:
return self.get_self_info()
def on_event(self, raw_data: bytes): def on_event(self, raw_data: bytes):
try: try:
data = json.loads(raw_data) data = json.loads(raw_data)