mod album_manager; mod config; mod discord; mod error; mod inventory; mod migrations; mod models; mod user; use crate::config::{Args, BotConfig, GlobalData}; use crate::discord::run_bot; use log::{error, info}; use magick_rust::magick_wand_genesis; use std::sync::Once; use structopt::StructOpt; const BAD_APPLE: &str = include_str!("assets/bad_apple.txt"); static START: Once = Once::new(); #[tokio::main] async fn main() { let args: Args = Args::from_args(); tracing_subscriber::fmt::init(); let cfg = match BotConfig::new(&args.cfg_path) { Ok(cfg) => cfg, Err(err) => { error!("Unable to open config: {}", err); return; } }; START.call_once(|| { magick_wand_genesis(); }); let global_data = match GlobalData::new(args, cfg).await { Ok(global_data) => global_data, Err(err) => { error!("Error parsing config: {}", err); return; } }; info!("Fren bot starting..."); run_bot(global_data).await; }