pub const DAY: u64 = 86_400; pub const HOUR: u64 = 3_600; pub const MINUTE: u64 = 60; pub const EMBED_DESCRIPTION_MAX_LENGTH: usize = 4000; pub const SELECT_MAX_ENTRIES: usize = 25; pub const CHARACTERS: &str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"; const THEME_COLOR_FALLBACK: u32 = 0x8fb677; pub const DEFAULT_AVATAR: AttachmentType = ( include_bytes!(concat!( env!("CARGO_MANIFEST_DIR"), "/assets/", env!("WEBHOOK_AVATAR", "WEBHOOK_AVATAR not provided for compilation") )) as &[u8], env!("WEBHOOK_AVATAR"), ) .into(); use std::{collections::HashSet, env, iter::FromIterator}; use regex::{Regex, RegexBuilder}; use serenity::http::AttachmentType; lazy_static! { pub static ref REGEX_CHANNEL: Regex = Regex::new(r#"^\s*<#(\d+)>\s*$"#).unwrap(); pub static ref REGEX_ROLE: Regex = Regex::new(r#"<@&(\d+)>"#).unwrap(); pub static ref REGEX_COMMANDS: Regex = Regex::new(r#"([a-z]+)"#).unwrap(); pub static ref REGEX_ALIAS: Regex = Regex::new(r#"(?P[\S]{1,12})(?:(?: (?P.*)$)|$)"#).unwrap(); pub static ref REGEX_CONTENT_SUBSTITUTION: Regex = Regex::new(r#"<<((?P\d+)|(?P.{1,100}))>>"#).unwrap(); pub static ref REGEX_CHANNEL_USER: Regex = Regex::new(r#"\s*<(#|@)(?:!)?(\d+)>\s*"#).unwrap(); pub static ref REGEX_REMIND_COMMAND: Regex = RegexBuilder::new( r#"(?P(?:<@\d+>\s+|<@!\d+>\s+|<#\d+>\s+)*)(?P