Files
reminder-bot/src/commands/todo/guild/view.rs
2025-06-24 20:16:07 +01:00

47 lines
1.1 KiB
Rust

use serde::{Deserialize, Serialize};
use crate::{
commands::todo::show_todo_page,
utils::{Extract, Recordable},
Context, Error,
};
#[derive(Serialize, Deserialize, Extract)]
pub struct Options;
impl Recordable for Options {
async fn run(self, ctx: Context<'_>) -> Result<(), Error> {
let values = sqlx::query!(
"
SELECT id, value FROM todos
WHERE guild_id = ?
",
ctx.guild_id().unwrap().get(),
)
.fetch_all(&ctx.data().database)
.await
.unwrap()
.iter()
.map(|row| (row.id as usize, row.value.clone()))
.collect::<Vec<(usize, String)>>();
let resp = show_todo_page(&values, 0, None, None, ctx.guild_id().map(|g| g.get()));
ctx.send(resp).await?;
Ok(())
}
}
/// View and remove from the server todo list
#[poise::command(
slash_command,
rename = "view",
guild_only = true,
identifying_name = "todo_guild_view",
default_member_permissions = "MANAGE_GUILD"
)]
pub async fn view(ctx: Context<'_>) -> Result<(), Error> {
(Options {}).run(ctx).await
}