feat(广播): 重构广播插件为会话模式并支持合并转发消息
重构广播功能,从简单的回复转发模式改为更安全的会话模式: 1. 添加会话状态管理,60秒超时自动取消 2. 支持直接发送消息内容而非必须回复 3. 使用合并转发消息格式发送广播内容 4. 改进错误处理和状态报告 5. 添加类型提示和文档注释 同时修改相关API和模型: 1. 在GroupInfo中添加群备注和全员禁言字段 2. 改进get_forward_msg返回类型和兼容性处理 3. 清理不必要的Optional导入
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
该模块定义了 `GroupAPI` Mixin 类,提供了所有与群组管理、成员操作
|
||||
等相关的 OneBot v11 API 封装。
|
||||
"""
|
||||
from typing import List, Dict, Any, Optional
|
||||
from typing import List, Dict, Any
|
||||
import json
|
||||
from core.redis_manager import redis_manager
|
||||
from .base import BaseAPI
|
||||
|
||||
@@ -105,7 +105,7 @@ class MessageAPI(BaseAPI):
|
||||
"""
|
||||
return await self.call_api("get_msg", {"message_id": message_id})
|
||||
|
||||
async def get_forward_msg(self, id: str) -> Dict[str, Any]:
|
||||
async def get_forward_msg(self, id: str) -> List[Dict[str, Any]]:
|
||||
"""
|
||||
获取合并转发消息的内容。
|
||||
|
||||
@@ -113,9 +113,21 @@ class MessageAPI(BaseAPI):
|
||||
id (str): 合并转发消息的 ID。
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: OneBot API 的响应数据,包含转发消息的节点列表。
|
||||
List[Dict[str, Any]]: 转发消息的节点列表。
|
||||
"""
|
||||
return await self.call_api("get_forward_msg", {"id": id})
|
||||
forward_data = await self.call_api("get_forward_msg", {"id": id})
|
||||
nodes = forward_data.get("data")
|
||||
|
||||
if not isinstance(nodes, list):
|
||||
# 兼容某些实现可能将节点放在 'messages' 键下
|
||||
data = forward_data.get('data', {})
|
||||
if isinstance(data, dict):
|
||||
nodes = data.get('messages')
|
||||
|
||||
if not isinstance(nodes, list):
|
||||
raise ValueError("在 get_forward_msg 响应中找不到消息节点列表")
|
||||
|
||||
return nodes
|
||||
|
||||
async def send_group_forward_msg(self, group_id: int, messages: List[Dict[str, Any]]) -> Dict[str, Any]:
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user