1#![deny(clippy::all)]
8
9mod cache;
10mod config;
11mod event;
12mod expand;
13mod utils;
14
15use crate::{
16 config::{BabyriteConfig, EnvConfig},
17 event::{BabyriteEventHandler, HttpClient},
18};
19use serenity::all::GatewayIntents;
20
21#[tokio::main]
22async fn main() -> anyhow::Result<()> {
23 dotenvy::dotenv().ok();
24
25 BabyriteConfig::init()?;
26 let envs = EnvConfig::get();
27
28 match BabyriteConfig::get().json_logging {
29 true => tracing_subscriber::fmt().json().init(),
30 false => tracing_subscriber::fmt().compact().init(),
31 }
32 tracing::debug!("Config: {:?}", BabyriteConfig::get());
33
34 let mut client = serenity::Client::builder(
35 &envs.discord_api_token,
36 GatewayIntents::MESSAGE_CONTENT | GatewayIntents::GUILD_MESSAGES,
37 )
38 .event_handler(BabyriteEventHandler)
39 .await
40 .expect("Failed to initialize client.");
41
42 {
44 let mut data = client.data.write().await;
45 data.insert::<HttpClient>(reqwest::Client::new());
46 }
47
48 if let Err(why) = client.start().await {
49 return Err(anyhow::anyhow!(why));
50 }
51
52 Ok(())
53}