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"(?si).*{}", regex::escape(command)),
Filter::Sensitive => format!(
r"(?si)[^\w\s]*({}?{})",
regex::escape(&command[..1]),
regex::escape(&command[1..])
),
};
Regex::new(&pattern).unwrap().is_match(message)
}