36 lines
1.3 KiB
Rust
Raw Normal View History

2025-09-02 15:07:34 +02:00
use color_eyre::eyre::{Error, Result};
use poise::serenity_prelude::{self as serenity, FullEvent};
use tracing::info;
fn event_handler(_ctx: serenity::Context, event: &FullEvent) {
if let FullEvent::Ready { data_about_bot } = event {
info!("Logged in as {}", data_about_bot.user.name);
}
}
pub async fn make_bot() -> Result<serenity::Client> {
let token = std::env::var("DISCORD_TOKEN").expect("DISCORD_TOKEN environment variable is missing");
let intents = serenity::GatewayIntents::non_privileged();
let framework = poise::Framework::<(), Error>::builder()
.options(poise::FrameworkOptions {
commands: vec![],
event_handler: |ctx, event, _framework: poise::FrameworkContext<'_, (), _>, _data| {
Box::pin(async move {
event_handler(ctx.clone(), event);
Ok(())
})
},
..Default::default()
})
.setup(|ctx, _ready, framework| {
Box::pin(async move {
poise::builtins::register_globally(ctx, &framework.options().commands).await?;
Ok(())
})
})
.build();
Ok(serenity::ClientBuilder::new(token, intents)
.framework(framework)
.await?)
}