From cd391d7475b0207921bbb5ccfa30bd5224afde33 Mon Sep 17 00:00:00 2001 From: Xyon Date: Wed, 27 Sep 2023 13:20:08 +0100 Subject: [PATCH] Reply with a random matching response if multiple responses match the trigger --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/badgey/models/custom_response.rs | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 19b843d..39e1d39 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -159,7 +159,7 @@ dependencies = [ [[package]] name = "badgey" -version = "3.1.0" +version = "3.1.1" dependencies = [ "built", "clap", diff --git a/Cargo.toml b/Cargo.toml index af1641d..6ec09be 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "badgey" -version = "3.1.0" +version = "3.1.1" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/src/badgey/models/custom_response.rs b/src/badgey/models/custom_response.rs index f24c06c..0f2e53c 100644 --- a/src/badgey/models/custom_response.rs +++ b/src/badgey/models/custom_response.rs @@ -1,7 +1,7 @@ use std::fmt::{Display, Formatter}; use built::chrono::{NaiveDateTime, Utc}; use diesel::prelude::*; -use diesel::insert_into; +use diesel::{insert_into, sql_function}; use regex::Regex; use poise::serenity_prelude as serenity; @@ -10,6 +10,8 @@ use manifold::error::{ManifoldError, ManifoldResult}; use manifold::models::user::UserInfo; use manifold::schema::userinfo; +sql_function!(fn random() -> Text); + use crate::badgey::schema::*; #[derive(Queryable, Selectable, Identifiable, Insertable, AsChangeset, Associations, Debug, PartialEq, Clone)] @@ -80,6 +82,7 @@ impl CustomResponse { Ok(custom_responses::table .filter(custom_responses::trigger.ilike(needle)) .filter(custom_responses::deleted.is_null()) + .order_by(random()) .limit(1) .select(CustomResponse::as_select()) .get_result(&mut conn.get()?)?)