initial commit
This commit is contained in:
19
src/discord/commands.rs
Normal file
19
src/discord/commands.rs
Normal file
@@ -0,0 +1,19 @@
|
||||
use super::{Context, Error};
|
||||
|
||||
use super::utils::serenity;
|
||||
|
||||
#[poise::command(slash_command)]
|
||||
pub async fn add_logging_channel(
|
||||
ctx: Context<'_>,
|
||||
#[description = "Selected channel"] channel: Option<serenity::Channel>,
|
||||
) -> Result<(), Error> {
|
||||
let response = match channel {
|
||||
None => "No channel selected. Please select one.".to_owned(),
|
||||
Some(chan) => {
|
||||
let channel_id = chan.id();
|
||||
format!("Selected channel <#{channel_id}>")
|
||||
}
|
||||
};
|
||||
ctx.say(response).await?;
|
||||
Ok(())
|
||||
}
|
||||
0
src/discord/events.rs
Normal file
0
src/discord/events.rs
Normal file
31
src/discord/mod.rs
Normal file
31
src/discord/mod.rs
Normal file
@@ -0,0 +1,31 @@
|
||||
mod commands;
|
||||
mod events;
|
||||
pub mod utils;
|
||||
|
||||
use poise::FrameworkBuilder;
|
||||
use utils::serenity;
|
||||
|
||||
use commands::add_logging_channel;
|
||||
use utils::{BotData, Context, Error};
|
||||
|
||||
pub async fn make_bot() -> color_eyre::Result<FrameworkBuilder<BotData, Error>>
|
||||
{
|
||||
let framework = poise::Framework::builder()
|
||||
.options(poise::FrameworkOptions {
|
||||
commands: vec![add_logging_channel()],
|
||||
..Default::default()
|
||||
})
|
||||
.token(std::env::var("DISCORD_TOKEN").expect("missing DISCORD_TOKEN"))
|
||||
.intents(serenity::GatewayIntents::non_privileged())
|
||||
.setup(|ctx, _ready, framework| {
|
||||
Box::pin(async move {
|
||||
poise::builtins::register_globally(
|
||||
ctx,
|
||||
&framework.options().commands,
|
||||
)
|
||||
.await?;
|
||||
Ok(BotData::new().await?)
|
||||
})
|
||||
});
|
||||
Ok(framework)
|
||||
}
|
||||
17
src/discord/utils.rs
Normal file
17
src/discord/utils.rs
Normal file
@@ -0,0 +1,17 @@
|
||||
use crate::db::Database;
|
||||
|
||||
pub use poise::serenity_prelude as serenity;
|
||||
pub struct BotData {
|
||||
database: Database,
|
||||
}
|
||||
|
||||
impl BotData {
|
||||
pub async fn new() -> color_eyre::Result<Self> {
|
||||
Ok(Self {
|
||||
database: Database::new().await?,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
pub type Error = Box<dyn std::error::Error + Send + Sync>;
|
||||
pub type Context<'a> = poise::Context<'a, BotData, Error>;
|
||||
Reference in New Issue
Block a user