# -*- coding: utf-8 -*- """ =================================== 命令基类 =================================== 定义命令处理器的抽象基类,所有命令都必须继承此类。 """ from abc import ABC, abstractmethod from typing import List, Optional from bot.models import BotMessage, BotResponse class BotCommand(ABC): """ 命令处理器抽象基类 所有命令都必须继承此类并实现抽象方法。 使用示例: class MyCommand(BotCommand): @property def name(self) -> str: return "mycommand" @property def aliases(self) -> List[str]: return ["mc", "我的命令"] @property def description(self) -> str: return "这是我的命令" @property def usage(self) -> str: return "/mycommand [参数]" def execute(self, message: BotMessage, args: List[str]) -> BotResponse: return BotResponse.text_response("命令执行成功") """ @property @abstractmethod def name(self) -> str: """ 命令名称(不含前缀) 例如 "analyze",用户输入 "/analyze" 触发 """ pass @property @abstractmethod def aliases(self) -> List[str]: """ 命令别名列表 例如 ["a", "分析"],用户输入 "/a" 或 "分析" 也能触发 """ pass @property @abstractmethod def description(self) -> str: """命令描述(用于帮助信息)""" pass @property @abstractmethod def usage(self) -> str: """ 使用说明(用于帮助信息) 例如 "/analyze <股票代码>" """ pass @property def hidden(self) -> bool: """ 是否在帮助列表中隐藏 默认 False,设为 True 则不显示在 /help 列表中 """ return False @property def admin_only(self) -> bool: """ 是否仅管理员可用 默认 False,设为 True 则需要管理员权限 """ return False @abstractmethod def execute(self, message: BotMessage, args: List[str]) -> BotResponse: """ 执行命令 Args: message: 原始消息对象 args: 命令参数列表(已分割) Returns: BotResponse 响应对象 """ pass def validate_args(self, args: List[str]) -> Optional[str]: """ 验证参数 子类可重写此方法进行参数校验。 Args: args: 命令参数列表 Returns: 如果参数有效返回 None,否则返回错误信息 """ return None def get_help_text(self) -> str: """获取帮助文本""" return f"**{self.name}** - {self.description}\n用法: `{self.usage}`"