diff --git a/src/commands/count.rs b/src/commands/count.rs index d356177..8868573 100644 --- a/src/commands/count.rs +++ b/src/commands/count.rs @@ -8,12 +8,15 @@ use std::{collections::HashMap, env}; use tokio_postgres::NoTls; #[command] -pub async fn kitna(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult { - let query: String = args.single::()?; +pub async fn kitna(ctx: &Context, msg: &Message, args: Args) -> CommandResult { + let query: String = args.raw().collect::>().join(" "); + if query == "" { + msg.reply(ctx, "bruh kitna kya?"); + } let words: HashMap<&str, Regex> = [ ("nword", Regex::new(r"(?i)(nig+(er|a)|nig{2,})").unwrap()), - ("acha", Regex::new(r"(?i)a(c??h??|6??)a+").unwrap()), - ("sus", Regex::new(r"(?i)sus|(?i)amon?g\s?us").unwrap()), + ("acha", Regex::new(r"(?i)a((c+?h+?|6+?)a+").unwrap()), + ("sus", Regex::new(r"(?i)sus|(?i)amon??g\s??us").unwrap()), ] .iter() .cloned() @@ -38,7 +41,8 @@ pub async fn kitna(ctx: &Context, msg: &Message, mut args: Args) -> CommandResul .await .expect("cant select the count"); let count: i32 = query_result.get("count"); - msg.reply(ctx, format!("{} count for you: {}", name, count)).await?; + msg.reply(ctx, format!("{} count for you: {}", name, count)) + .await?; break; } } diff --git a/src/commands/minigames.rs b/src/commands/minigames.rs index a31ace5..ee59340 100644 --- a/src/commands/minigames.rs +++ b/src/commands/minigames.rs @@ -5,8 +5,8 @@ use serenity::{ prelude::*, }; use std::time::Duration; -#[command] -pub async fn challenge(ctx: &Context, msg: &Message) -> CommandResult { + +async fn chall(ctx: &Context, msg: &Message) -> CommandResult { if msg.mentions.is_empty() { msg.reply(ctx, "mention to daal chutiye").await?; return Ok(()); @@ -35,7 +35,7 @@ pub async fn challenge(ctx: &Context, msg: &Message) -> CommandResult { } else if ["no", "nahi", "n"].contains(&answer.content.to_lowercase().as_str()) { msg.reply(ctx, "Challenge not accepted").await?; challenge.delete(&ctx.http).await?; - return Ok(()); + return 1; } else { answer .reply( @@ -43,11 +43,17 @@ pub async fn challenge(ctx: &Context, msg: &Message) -> CommandResult { "Please only answer in no/nahi/n or yes/ha/y\ndeleting challenge ...", ) .await?; + return 1; } } else { msg.reply(ctx, "Challenge not accepted in 60s").await?; - return Ok(()); + return 1; } + return 0; +} + +#[command] +pub async fn challenge(ctx: &Context, msg: &Message) -> CommandResult { let won = random(); let winner = if won { msg.mentions[0].mention() diff --git a/src/handler/count.rs b/src/handler/count.rs index 7449907..62ae4da 100644 --- a/src/handler/count.rs +++ b/src/handler/count.rs @@ -1,14 +1,14 @@ +use regex::Regex; use serenity::model::channel::Message; use std::collections::HashMap; use std::env; -use regex::Regex; use tokio_postgres::NoTls; pub async fn count(msg: Message) { let words: HashMap<&str, Regex> = [ ("nword", Regex::new(r"(?i)(nig+(er|a)|nig{2,})").unwrap()), - ("acha", Regex::new(r"(?i)a(c??h??|6??)a+").unwrap()), - ("sus", Regex::new(r"(?i)sus|(?i)amon?g\s?us").unwrap()), + ("acha", Regex::new(r"(?i)a(c+?h+?|6+?)a+").unwrap()), + ("sus", Regex::new(r"(?i)sus|(?i)amon??g\s??us").unwrap()), ] .iter() .cloned() @@ -42,7 +42,8 @@ pub async fn count(msg: Message) { .expect("cant create table"); for name in ["nword", "acha", "sus"] { - if words[name].is_match(&msg.content) { + let count = words[name].captures_iter(&msg.content).count(); + if count > 0 { let query_result = client .query( format!("SELECT count FROM user{} where name='{}'", id, name).as_str(), @@ -53,7 +54,11 @@ pub async fn count(msg: Message) { if query_result.is_empty() { client .execute( - format!("insert into user{} (name, count) values ('{}', 0)", id, name).as_str(), + format!( + "insert into user{} (name, count) values ('{}', 0)", + id, name + ) + .as_str(), &[], ) .await @@ -61,7 +66,11 @@ pub async fn count(msg: Message) { } client .execute( - format!("UPDATE user{} SET count = count + 1 where name='{}'", id, name).as_str(), + format!( + "UPDATE user{} SET count = count + {} where name='{}'", + id, count, name + ) + .as_str(), &[], ) .await