feat: initial bot setup
This commit is contained in:
35
src/discord/mod.rs
Normal file
35
src/discord/mod.rs
Normal file
@@ -0,0 +1,35 @@
|
||||
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?)
|
||||
}
|
||||
Reference in New Issue
Block a user