diff --git a/Cargo.lock b/Cargo.lock index 9898ad7..583fd73 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1786,6 +1786,15 @@ dependencies = [ "getrandom", ] +[[package]] +name = "rand_pcg" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" +dependencies = [ + "rand_core", +] + [[package]] name = "redox_syscall" version = "0.5.7" @@ -2297,6 +2306,7 @@ dependencies = [ "libloading", "poise", "rand", + "rand_pcg", "reqwest 0.12.9", "serde", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index 124dcc8..4b300f4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,3 +20,4 @@ serde_json = "1.0.133" libloading = "0.8.5" time = "0.3.36" rand = "0.8.5" +rand_pcg = "0.3.1" diff --git a/src/commands/cuteness.rs b/src/commands/cuteness.rs index e829b55..1ad4e10 100644 --- a/src/commands/cuteness.rs +++ b/src/commands/cuteness.rs @@ -1,5 +1,6 @@ use poise::CreateReply; -use rand::Rng; +use rand::{Rng, SeedableRng}; +use rand_pcg::Pcg32; use serenity::all::{CreateAllowedMentions, User}; use crate::{Context, Error}; @@ -39,14 +40,27 @@ pub async fn cutenesss( .await?; } + // Convert the users id to a byte array; + let mut rng = Pcg32::seed_from_u64(user.id.into()); + let charm_factor = rng.gen_range(20..50); + let randomness_factor = rng.gen_range(10..30); + let humor_factor = rng.gen_range(5..20); + + // Convert the users id to a i64 + let user_id: i64 = user.id.into(); + let id_factor = user_id % 100; + let cuteness_score = (charm_factor + randomness_factor + humor_factor + id_factor) % 101; + + // Pow cuteness_score by 2 to make it more likely to be higher + let cuteness_score = cuteness_score.pow(2); + thinking_message .edit( ctx, CreateReply::default() .content(format!( "I have determined that {} is {}% cute!", - user.name, - rand::thread_rng().gen_range(0..101) + user.name, cuteness_score )) .allowed_mentions(CreateAllowedMentions::default().users(vec![user.id])), )