65 lines
2.1 KiB
Rust
65 lines
2.1 KiB
Rust
use config::parse_local_config;
|
|
use poise::serenity_prelude as serenity;
|
|
use tracing::{error, info};
|
|
|
|
pub mod config;
|
|
pub mod dotenv;
|
|
pub mod model;
|
|
|
|
struct Data {} // User data, which is stored and accessible in all command invocations
|
|
type Error = Box<dyn std::error::Error + Send + Sync>;
|
|
type Context<'a> = poise::Context<'a, Data, Error>;
|
|
|
|
/// Displays your or another user's account creation date
|
|
#[poise::command(slash_command, prefix_command)]
|
|
async fn age(
|
|
ctx: Context<'_>,
|
|
#[description = "Selected user"] user: Option<serenity::User>,
|
|
) -> Result<(), Error> {
|
|
let u = user.as_ref().unwrap_or_else(|| ctx.author());
|
|
let response = format!("{}'s account was created at {}", u.name, u.created_at());
|
|
ctx.say(response).await?;
|
|
Ok(())
|
|
}
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
let config = parse_local_config();
|
|
tool_tracing::init::init_tracing(config.tracing.clone(), config.bot_name.clone());
|
|
|
|
info!("Init Database");
|
|
let datalake_config = model::create_pool_manager(config.persistence.clone()).unwrap();
|
|
let _manager = match model::create_manager_and_init(datalake_config).await {
|
|
Ok(manager) => {
|
|
info!("Database manager created successfully");
|
|
manager
|
|
}
|
|
Err(e) => {
|
|
error!("Failed to create database manager: {}", e);
|
|
return;
|
|
}
|
|
};
|
|
info!("Database manager initialized successfully");
|
|
|
|
info!("Starting bot {}", config.bot_name);
|
|
let intents = serenity::GatewayIntents::non_privileged();
|
|
|
|
let framework = poise::Framework::builder()
|
|
.options(poise::FrameworkOptions {
|
|
commands: vec![age()],
|
|
..Default::default()
|
|
})
|
|
.setup(|ctx, _ready, framework| {
|
|
Box::pin(async move {
|
|
poise::builtins::register_globally(ctx, &framework.options().commands).await?;
|
|
Ok(Data {})
|
|
})
|
|
})
|
|
.build();
|
|
|
|
let client = serenity::ClientBuilder::new(config.token.clone(), intents)
|
|
.framework(framework)
|
|
.await;
|
|
client.unwrap().start().await.unwrap();
|
|
}
|