rubot/src/bot/modules/builtins.rs
2026-07-29 16:24:30 +00:00

29 lines
862 B
Rust

use crate::bot::module::{Action, Command, CommandSpec, Module};
pub struct Builtins;
const COMMANDS: &[CommandSpec] = &[
CommandSpec { name: "ping", usage: "ping", about: "reply with 'pong'" },
CommandSpec { name: "echo", usage: "echo <text>", about: "echo the text back" },
CommandSpec { name: "hello", usage: "hello", about: "greet the sender" },
];
impl Module for Builtins {
fn name(&self) -> &'static str {
"builtins"
}
fn commands(&self) -> &'static [CommandSpec] {
COMMANDS
}
fn on_command(&mut self, cmd: &Command) -> Vec<Action> {
let reply = match cmd.name {
"ping" => "pong".to_string(),
"echo" => cmd.args.join(" "),
"hello" => format!("hello, {}!", cmd.sender),
_ => return Vec::new(),
};
vec![Action::Reply(reply)]
}
}