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, ...] = ()