Skip to content

命令处理器

BotRS 自身不带命令框架。参考实现在 examples/guild/command.rs:一个极小的 CommandRegistry,把别名映射到 fn(&str) -> Option<String>,由 EventHandler::message_create 分发。

套路

在 handler 构造时建好 registry,事件中传入 trim 后的消息内容调用 registry.try_execute(content)。handler 命中返回 Some(reply),否则返回 None

rust
struct CommandRegistry { commands: Vec<(Vec<String>, fn(&str) -> Option<String>)> }

impl CommandRegistry {
    fn try_execute(&self, content: &str) -> Option<String> {
        let trimmed = content.trim();
        for (aliases, handler) in &self.commands {
            for alias in aliases {
                if trimmed.starts_with(alias) {
                    let params = trimmed[alias.len()..].trim();
                    return handler(params);
                }
            }
        }
        None
    }
}

示例注册了两个命令(你好 / hello晚安),并通过 session.reply(&response) 回复。命令需要返回富消息时,使用 send_markdown_messagesend_embed_messagesend_ark_messagesend_keyboard_message

参见

基于 MIT 许可证发布