ForcePilot/backend/package/yuxi/channels/adapters/qqbot/session.py
Kris 552aef767c feat(qqbot): 实现QQ机器人适配器完整功能模块
新增QQ Bot适配器完整代码栈,包含:
1. 基础适配器入口与工具类封装
2. 会话管理、重试队列与流量控制
3. 命令系统与内置指令(ping/help/status等)
4. 富媒体消息处理与格式转换
5. 引用存储与审批管理
6. 凭证备份与会话持久化
7. 健康检查与交互回调系统
2026-05-12 00:48:04 +08:00

46 lines
1.5 KiB
Python

from __future__ import annotations
from yuxi.channels.models import ChannelIdentity
from .constants import DM_CHAT_PREFIX, GROUP_CHAT_PREFIX
def resolve_thread_key(identity: ChannelIdentity) -> str:
chat_id = identity.channel_chat_id
if chat_id.startswith(GROUP_CHAT_PREFIX):
return f"qqbot:group:{chat_id}"
elif chat_id.startswith(DM_CHAT_PREFIX):
return f"qqbot:direct:{chat_id}"
return f"qqbot:guild:{chat_id}"
def resolve_agent_route(
identity: ChannelIdentity,
default_agent_id: str = "default",
groups_config: dict | None = None,
guild_channels_config: dict | None = None,
) -> str:
chat_id = identity.channel_chat_id
if chat_id.startswith(GROUP_CHAT_PREFIX):
groups = groups_config or {}
chat_cfg = groups.get(chat_id, {})
agent_id = chat_cfg.get("agent_id", default_agent_id)
return f"agent:{agent_id}:qqbot:group:{chat_id}"
elif chat_id.startswith(DM_CHAT_PREFIX):
return f"agent:{default_agent_id}:qqbot:direct:{chat_id}"
else:
guild_channels = guild_channels_config or {}
channel_cfg = guild_channels.get(chat_id, {})
agent_id = channel_cfg.get("agent_id", default_agent_id)
return f"agent:{agent_id}:qqbot:guild:{chat_id}"
def resolve_chat_type(identity: ChannelIdentity) -> str:
chat_id = identity.channel_chat_id
if chat_id.startswith(GROUP_CHAT_PREFIX):
return "group"
elif chat_id.startswith(DM_CHAT_PREFIX):
return "direct"
return "guild_channel"