ForcePilot/backend/package/yuxi/channels/adapters/qqbot/sender_init.py
Kris ef5483dc1a refactor(qqbot): 重构QQ机器人适配器代码,优化多项功能与结构
主要变更:
1. 修复速率限流器使用setdefault替代重复创建令牌桶
2. 重构交互注册表匹配逻辑,优化精确匹配查找
3. 重构去重缓存逻辑,移到适配器实例方法
4. 重构发送URL解析,增加合法性校验并拆分公共方法
5. 优化流式消息处理逻辑,简化flush_controller调用
6. 重构群聊类型判断代码,简化语法
7. 修复重连管理器对None类型关闭分类的处理
8. 新增消息缓存、线程模拟器、发送初始化模块
9. 重构凭证备份与会话存储逻辑,支持环境变量指定状态目录
10. 新增配置提示与向导二维码绑定功能
11. 优化媒体上传逻辑,增加重试机制与缓存
12. 新增审批键盘模板构建函数
13. 重构消息格式处理,修正媒体发送字段与长度限制
14. 修复令牌过期时间计算,使用time.time替代monotonic
15. 新增群组激活缓冲区与用户追踪器增强功能
16. 修复换行符问题,统一文件结尾格式
2026-05-13 16:13:48 +08:00

49 lines
1.2 KiB
Python

from __future__ import annotations
import logging
from dataclasses import dataclass
logger = logging.getLogger(__name__)
PLUGIN_VERSION = "1.0.0"
OPENCLAW_VERSION = "1.0.0"
@dataclass
class SenderInfo:
plugin_version: str = PLUGIN_VERSION
openclaw_version: str = OPENCLAW_VERSION
channel_id: str = "qqbot"
user_agent: str = ""
def __post_init__(self):
self.user_agent = f"openclaw-qqbot/{self.plugin_version} openclaw/{self.openclaw_version}"
def init_sender(
plugin_version: str = PLUGIN_VERSION,
openclaw_version: str = OPENCLAW_VERSION,
) -> SenderInfo:
info = SenderInfo(
plugin_version=plugin_version,
openclaw_version=openclaw_version,
)
logger.info(
"Sender initialized: plugin=%s openclaw=%s ua=%s",
info.plugin_version,
info.openclaw_version,
info.user_agent,
)
return info
def build_sender_headers(info: SenderInfo, extra: dict | None = None) -> dict:
headers = {
"User-Agent": info.user_agent,
"X-Plugin-Version": info.plugin_version,
"X-OpenClaw-Version": info.openclaw_version,
}
if extra:
headers.update(extra)
return headers