ForcePilot/backend/package/yuxi/channel/sdk/actions/names.py
Kris b438af3ba8 feat(channel-sdk): 新增完整的渠道SDK工具链
本提交新增了全渠道SDK核心模块:
1.  异步锁、目标解析、动作调度等基础工具
2.  消息动作注册与统一调度系统
3.  测试套件与契约测试框架
4.  完整的目标解析流水线与工具函数
5.  资源依赖注入与生命周期管理
2026-05-21 10:29:12 +08:00

74 lines
2.3 KiB
Python

from __future__ import annotations
from enum import StrEnum
class MessageAction(StrEnum):
"""全渠道统一消息动作命名空间。
渠道插件通过此枚举声明支持的动作,替代自由字符串。
基于 OpenClaw 58 种动作逐项分析后,保留 Yuxi 渠道实际需要的核心动作。
"""
SEND = "send"
SEND_MEDIA = "send_media"
REPLY = "reply"
BROADCAST = "broadcast"
EDIT = "edit"
UNSEND = "unsend"
REACT = "react"
REACT_REMOVE = "react_remove"
REACTIONS = "reactions"
PIN = "pin"
UNPIN = "unpin"
POLL = "poll"
POLL_VOTE = "poll_vote"
RENAME_GROUP = "rename_group"
ADD_PARTICIPANT = "add_participant"
REMOVE_PARTICIPANT = "remove_participant"
MEMBER_INFO = "member_info"
PERMISSIONS = "permissions"
TOPIC_CREATE = "topic_create"
TOPIC_EDIT = "topic_edit"
THREAD_CREATE = "thread_create"
THREAD_LIST = "thread_list"
THREAD_REPLY = "thread_reply"
READ = "read"
DELETE = "delete"
MESSAGE_ACTION_GROUPS: dict[str, list[MessageAction]] = {
"basic": [MessageAction.SEND, MessageAction.SEND_MEDIA, MessageAction.REPLY, MessageAction.BROADCAST],
"modify": [MessageAction.EDIT, MessageAction.UNSEND, MessageAction.DELETE],
"expression": [MessageAction.REACT, MessageAction.REACT_REMOVE, MessageAction.REACTIONS],
"pin": [MessageAction.PIN, MessageAction.UNPIN],
"poll": [MessageAction.POLL, MessageAction.POLL_VOTE],
"group": [
MessageAction.RENAME_GROUP,
MessageAction.ADD_PARTICIPANT,
MessageAction.REMOVE_PARTICIPANT,
MessageAction.MEMBER_INFO,
MessageAction.PERMISSIONS,
],
"thread": [
MessageAction.THREAD_CREATE,
MessageAction.THREAD_LIST,
MessageAction.THREAD_REPLY,
MessageAction.TOPIC_CREATE,
MessageAction.TOPIC_EDIT,
],
"utility": [MessageAction.READ],
}
MESSAGE_ACTIONS_BASIC: tuple[MessageAction, ...] = tuple(MESSAGE_ACTION_GROUPS["basic"])
MESSAGE_ACTIONS_GROUP: tuple[MessageAction, ...] = tuple(MESSAGE_ACTION_GROUPS["group"])
MESSAGE_ACTIONS_THREAD: tuple[MessageAction, ...] = tuple(MESSAGE_ACTION_GROUPS["thread"])
MESSAGE_ACTIONS_POLL: tuple[MessageAction, ...] = tuple(MESSAGE_ACTION_GROUPS["poll"])
MESSAGE_ACTIONS_ATTACHMENT: tuple[MessageAction, ...] = ()