From 9b8b2d28e5719184326e1d0d1f5f0bb6a5e88772 Mon Sep 17 00:00:00 2001 From: natto1784 Date: Sun, 13 Feb 2022 00:02:10 +0530 Subject: [PATCH] add help messages and turn rust backtrace on --- singh3.nomad | 3 ++- src/commands/count.rs | 8 ++++++++ src/main.rs | 34 ++++++++++++++++++++++++++++++++-- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/singh3.nomad b/singh3.nomad index f4403eb..4cd5da7 100644 --- a/singh3.nomad +++ b/singh3.nomad @@ -50,11 +50,12 @@ EOF template { data = < CommandResult { #[command] pub async fn rm(ctx: &Context, msg: &Message, args: Args) -> CommandResult { let query: String = args.raw().collect::>().join(" "); + if query == "" { + msg.reply(ctx, "remove what?").await?; + return Ok(()); + } let data_read = ctx.data.read().await; let db = data_read .get::() @@ -200,6 +204,10 @@ pub async fn ls(ctx: &Context, msg: &Message, _: Args) -> CommandResult { .expect("Expected Database in TypeMap.") .clone(); let rows = db.query("select * from words", &[]).await?; + if rows.is_empty() { + msg.reply(ctx, "No words stored").await?; + return Ok(()); + } msg.channel_id .send_message(ctx, |mut m| { let mut a: u32 = 1; diff --git a/src/main.rs b/src/main.rs index 0a2d2f2..b1836cc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,8 +6,16 @@ use commands::minigames::*; use handler::Handler; use serenity::{ client::bridge::gateway::ShardManager, - framework::{standard::macros::group, StandardFramework}, + framework::{ + standard::{ + help_commands, + macros::{group, help}, + Args, CommandGroup, CommandResult, HelpOptions, + }, + StandardFramework, + }, http::Http, + model::{channel::Message, id::UserId}, prelude::*, }; use std::{collections::HashSet, env, sync::Arc}; @@ -35,6 +43,23 @@ struct Count; #[commands(challenge)] struct Minigames; +#[help] +#[max_levenshtein_distance(2)] +#[indention_prefix = "+"] +#[lacking_role = "Nothing"] +#[wrong_channel = "Strike"] +async fn my_help( + context: &Context, + msg: &Message, + args: Args, + help_options: &'static HelpOptions, + groups: &[&'static CommandGroup], + owners: HashSet, +) -> CommandResult { + let _ = help_commands::with_embeds(context, msg, args, help_options, groups, owners).await; + Ok(()) +} + #[tokio::main] async fn main() { let token = env::var("DISCORD_TOKEN").expect("Token daal madarchod"); @@ -53,6 +78,7 @@ async fn main() { let framework = StandardFramework::new() .configure(|c| c.owners(owners).prefix(",")) + .help(&MY_HELP) .group(&GENERAL_GROUP) .group(&COUNT_GROUP) .group(&MINIGAMES_GROUP); @@ -66,6 +92,7 @@ async fn main() { { let db_url: String = env::var("DB_URL").expect("DB_URL not found"); + println!("{}", db_url); let (db_client, conn) = tokio_postgres::connect(&db_url, tokio_postgres::NoTls) .await .expect("cant connect bha"); @@ -75,7 +102,10 @@ async fn main() { } }); let init_script = std::include_str!("../init.sql"); - db_client.batch_execute(init_script).await.expect("Couldn't run the init script"); + db_client + .batch_execute(init_script) + .await + .expect("Couldn't run the init script"); let mut data = client.data.write().await; data.insert::(Arc::new(db_client)); data.insert::(client.shard_manager.clone());