forked from projectmoon/tenebrous-dicebot
41 lines
1.1 KiB
Rust
41 lines
1.1 KiB
Rust
//Needed for nested Result handling from tokio. Probably can go away after 1.47.0.
|
|
#![type_length_limit = "7605144"]
|
|
use chronicle_dicebot::bot::DiceBot;
|
|
use chronicle_dicebot::config::*;
|
|
use chronicle_dicebot::db::Database;
|
|
use chronicle_dicebot::error::BotError;
|
|
use chronicle_dicebot::state::DiceBotState;
|
|
use env_logger::Env;
|
|
use log::error;
|
|
use std::sync::{Arc, RwLock};
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
env_logger::from_env(Env::default().default_filter_or("chronicle_dicebot=info,dicebot=info"))
|
|
.init();
|
|
match run().await {
|
|
Ok(_) => (),
|
|
Err(e) => error!("Error: {}", e),
|
|
};
|
|
}
|
|
|
|
async fn run() -> Result<(), BotError> {
|
|
let config_path = std::env::args()
|
|
.skip(1)
|
|
.next()
|
|
.expect("Need a config as an argument");
|
|
|
|
let cfg = Arc::new(read_config(config_path)?);
|
|
let db = Database::new(&cfg.database_path())?;
|
|
let state = Arc::new(RwLock::new(DiceBotState::new(&cfg)));
|
|
|
|
db.migrate(cfg.migration_version())?;
|
|
|
|
match DiceBot::new(&cfg, &state, &db) {
|
|
Ok(bot) => bot.run().await?,
|
|
Err(e) => println!("Error connecting: {:?}", e),
|
|
};
|
|
|
|
Ok(())
|
|
}
|