You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
1.1 KiB

use super::config::CONFIG;
use cmd_lib::{CmdResult, Process};
use serde::Deserialize;
use serenity::model::channel::Message;
#[derive(Deserialize, Debug)]
pub struct Command {
trigger: String,
command: String,
users: Vec<u64>,
pub fn print_commands() {
CONFIG.commands.iter().for_each(|c| println!("{:?}", c));
pub fn find_matching(message: &str) -> Option<&Command> {
CONFIG.commands.iter().find(|&c| message[1..] == c.trigger)
impl Command {
/// Check permissions for a command and execute it.
/// Returns an error for insufficient permissions or non-zero return codes.
pub fn execute(&self, msg: &Message) -> Result<(), String> {
"User {} tried to execute command {}",
&, &msg.content
if !self.users.contains(& {
return Err("You don’t have the permissions to execute this command.".to_owned());
.map_err(|e| format!("{:?}", e))