命令处理器
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_message、send_embed_message、send_ark_message 或 send_keyboard_message。
参见
- 指南:
docs/zh/guide/messages.md - 相关:交互式消息(按钮驱动的 UI)
- 示例:
examples/guild/command.rs