855 协议版本-调整完毕内容

This commit is contained in:
liuwei
2025-04-30 13:22:33 +08:00
parent 869bce8a18
commit 454d084715
88 changed files with 1565 additions and 7816 deletions

View File

@@ -1,12 +1,12 @@
# -*- coding: utf-8 -*-
import logging
from loguru import logger
import os.path
import random
import time
from typing import Any, Tuple, Coroutine
from gewechat.client import gewe_client
from utils.wechat.contact_manager import ContactManager
from wechat_ipad import WechatAPIClient
class MessageUtil:
@@ -15,11 +15,10 @@ class MessageUtil:
"""
# 修改 MessageUtil 类的初始化方法,接受联系人管理器而不是联系人字典
def __init__(self):
self.app_id = gewe_client.app_id
self.client = gewe_client.client
def __init__(self, client: WechatAPIClient = None):
self.client = client
self.contact_manager = ContactManager.get_instance()
self.LOG = logging.getLogger("MessageUtil")
self.LOG = logger
def send_text(self, msg: str, receiver: str, at_list: str = "") -> None:
"""
@@ -39,15 +38,15 @@ class MessageUtil:
else:
wxids = at_list.split(",")
if len(wxids) > 0:
ats += self.get_user_chatroom_nickname(receiver, wxids)
ats += self.client.get_nickname(receiver)
# {msg}{ats} 表示要发送的消息内容后面紧跟@,例如 北京天气情况为xxx @张三
if ats == "":
self.LOG.info(f"To {receiver}: {msg}")
self.client.post_text(self.app_id, receiver, "{msg}", "")
self.client.send_text_message(receiver, "{msg}", "")
else:
self.LOG.info(f"To {receiver}: {ats}\r{msg}")
self.client.post_text(self.app_id, receiver, f"{ats}\n{msg}", at_list)
self.client.send_text_message(receiver, f"{ats}\n{msg}", at_list)
def send_file(self, file_path: str, receiver: str) -> str:
"""
@@ -64,7 +63,7 @@ class MessageUtil:
self.LOG.info(f"Sending file to {path}: {filename}")
return self.client.post_file(self.app_id, receiver, file_path, filename)
def send_image(self, image_path: str, receiver: str) -> str:
def send_image(self, image_path: str, receiver: str) -> Coroutine[Any, Any, tuple[int, int, int]]:
"""
发送文件消息
@@ -75,7 +74,7 @@ class MessageUtil:
time.sleep(random.uniform(0.5, 1.5))
self.LOG.info(f"Sending file to {receiver}: {image_path}")
return self.client.post_image(self.app_id, receiver, image_path)
return self.client.send_image_message(receiver, image_path)
def send_rich_text(self, name: str, account: str, title: str, digest: str, url: str, thumburl: str,
receiver: str) -> int:
@@ -105,18 +104,12 @@ class MessageUtil:
time.sleep(random.uniform(0.5, 1.5))
self.LOG.info(f"Sending rich text to {receiver}: {title}")
return self.client.post_link(self.app_id, receiver, title, digest, url, thumburl)
def get_user_chatroom_nickname(self, chatroom_id: str, member_wxids: list[str]) -> str:
data = self.client.get_chatroom_member_detail(self.app_id, chatroom_id, member_wxids)
nicknames_with_at = [" @" + member["nickName"] for member in data["data"] if member.get("nickName")]
return " ".join(nicknames_with_at)
return self.client.send_link_message(self.app_id, receiver, title, digest, url, thumburl)
def invite_member(self, group_id, sender):
return self.client.invite_member(self.app_id, sender, group_id, "自动加群邀请")
return self.client.invite_chatroom_member( sender, group_id)
def get_chatroom_members(self, group_id) -> dict:
data = self.client.get_chatroom_member_list(self.app_id, group_id)
members = {member["wxid"]: member["nickName"] for member in data["data"]["memberList"]}
return members