use regex::Regex;
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum Filter {
Strict,
Flexible,
Sensitive,
}
pub fn matchit(message: &str, command: &str, filter: &Filter) -> bool {
let pattern = match filter {
Filter::Strict => format!(r"^{}$", regex::escape(command)),
Filter::Flexible => format!(r"(?i)^\s*[^\w\s]?{}\s*$", regex::escape(command)),
Filter::Sensitive => format!(
r"(?i)(?:^|[\W_]){}(?:[\W_]|$)",
regex::escape(&command.trim_start_matches(|c: char| !c.is_alphanumeric()))
),
};
Regex::new(&pattern).unwrap().is_match(message)
}