新增QQ Bot适配器完整代码栈,包含: 1. 基础适配器入口与工具类封装 2. 会话管理、重试队列与流量控制 3. 命令系统与内置指令(ping/help/status等) 4. 富媒体消息处理与格式转换 5. 引用存储与审批管理 6. 凭证备份与会话持久化 7. 健康检查与交互回调系统
46 lines
1.5 KiB
Python
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"
|