From 1b2f0e25acef7928e33564ed8e6a146a88863227 Mon Sep 17 00:00:00 2001 From: Max batleforc Date: Sat, 29 Jun 2024 16:18:26 +0200 Subject: [PATCH] feat: test avec message pour dar --- src/botv2/cmd/concour/start.rs | 34 ++++++++++++++++--- src/botv2/cmd/concour/update.rs | 6 ++++ src/botv2/domain/concour/update_concour.rs | 4 +++ .../check_if_server_enable_and_admin.rs | 2 +- src/db/concour.rs | 3 ++ 5 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/botv2/cmd/concour/start.rs b/src/botv2/cmd/concour/start.rs index 23523d7..c6017ef 100644 --- a/src/botv2/cmd/concour/start.rs +++ b/src/botv2/cmd/concour/start.rs @@ -6,7 +6,7 @@ use crate::botv2::{ init::{Context, Error}, }; use poise::{ - serenity_prelude::{model::colour, CreateEmbed, CreateEmbedFooter}, + serenity_prelude::{model::colour, CreateEmbed, CreateEmbedFooter, Mentionable, RoleId}, CreateReply, }; use tracing::instrument; @@ -57,7 +57,7 @@ pub async fn start(ctx: Context<'_>) -> Result<(), Error> { return Ok(()); } }; - let (concour, success) = match start_concour( + let (concour, text, success) = match start_concour( guild.get(), ctx.channel_id().get(), &mut cron_schedule, @@ -71,12 +71,33 @@ pub async fn start(ctx: Context<'_>) -> Result<(), Error> { CreateEmbed::new() .title("No concour created") .color(colour::Color::RED), + "".to_string(), false, ) } else { let concour = concour.unwrap(); let keyword_index = concour.index_keyword as usize; let keyword = concour.keywords.get(keyword_index).unwrap(); + // TODO : condition pour returner ou non le texte ? ou transformer les annonce obligatoirement en texte ? ou permettre de choisir entre embed ou texte ? + let ping_concour = match concour.ping_concour { + Some(role) => RoleId::new(role).mention().to_string(), + None => "".to_string(), + }; + let text = format!(" +Bonsoir ! + +👹 ❱ Le thème de ce soir est : {} + +📜 ❱ Les règles : Pas de loli, ni de shoota, ni de irl, ni de zoo. + +Celui ou celle qui a le plus de votes gagne, comme récompense elle aura le rôle @ROLE pour une durée de 48h. +Le concours ce termine dans deux jours. +Ceux qui votent pour leur propre photo, cela ne sera pas pris en compte, une photo par personne. + +À vos photos ! + +{} + ", keyword.to_string(),ping_concour); let output = CreateEmbed::new() .title(format!( "Concour: {} Jour : {}", @@ -92,7 +113,7 @@ pub async fn start(ctx: Context<'_>) -> Result<(), Error> { false, ) .color(colour::Color::DARK_GREEN); - (output, true) + (output, text, true) } } Err(err) => ( @@ -118,11 +139,16 @@ pub async fn start(ctx: Context<'_>) -> Result<(), Error> { .field("Your concour is possibly not initied correctly", "", false) .color(colour::Color::RED), }, + "".to_string(), false, ), }; let mut builder = CreateReply::default().ephemeral(!success); - builder = builder.embed(concour.footer(footer)); + if !text.is_empty() { + builder = builder.content(text); + } else { + builder = builder.embed(concour.footer(footer)); + } match ctx.send(builder).await { Ok(handler) => { if success { diff --git a/src/botv2/cmd/concour/update.rs b/src/botv2/cmd/concour/update.rs index 7c0bc50..1af47aa 100644 --- a/src/botv2/cmd/concour/update.rs +++ b/src/botv2/cmd/concour/update.rs @@ -25,6 +25,7 @@ pub async fn update( #[description = "Description du concour"] description: Option, #[description = "Banniére du concour"] banner: Option, #[description = "Role récompense"] role_recompense: Option, + #[description = "Role ping concour"] ping_concour: Option, ) -> Result<(), Error> { let guild = match ctx.guild_id() { Some(guild) => guild, @@ -66,12 +67,17 @@ pub async fn update( Some(role) => Some(role.id.get()), None => None, }; + let ping_concour = match ping_concour { + Some(role) => Some(role.id.get()), + None => None, + }; let concour = match update_concour( guild.get(), ctx.channel_id().get(), title, description, role, + ping_concour, banner, ) .await diff --git a/src/botv2/domain/concour/update_concour.rs b/src/botv2/domain/concour/update_concour.rs index 1c08157..db872ee 100644 --- a/src/botv2/domain/concour/update_concour.rs +++ b/src/botv2/domain/concour/update_concour.rs @@ -17,6 +17,7 @@ pub async fn update_concour( title: Option, description: Option, role_recopense: Option, + role_ping_concour: Option, banner: Option, ) -> Result, UpdateConcourError> { let concour = match Concour::find_by_server_id_channel_id(&server_id, &channel_id).await { @@ -47,6 +48,9 @@ pub async fn update_concour( if let Some(banner) = banner { concour.banner = Some(banner); } + if let Some(role_ping_concour) = role_ping_concour { + concour.ping_concour = Some(role_ping_concour); + } match concour.update().await { Ok(_) => {} diff --git a/src/botv2/domain/server_config/check_if_server_enable_and_admin.rs b/src/botv2/domain/server_config/check_if_server_enable_and_admin.rs index 9f6d91b..ff13cc6 100644 --- a/src/botv2/domain/server_config/check_if_server_enable_and_admin.rs +++ b/src/botv2/domain/server_config/check_if_server_enable_and_admin.rs @@ -1,6 +1,6 @@ use super::check_if_server_enable::{check_if_server_enable, CheckIfServerEnableError}; use crate::db::server_config::ServerConfig; -use poise::serenity_prelude::{self, CacheHttp, RoleId, UserId}; +use poise::serenity_prelude::{self, RoleId, UserId}; use tracing::{info, instrument}; #[instrument(level = "info", skip(http))] diff --git a/src/db/concour.rs b/src/db/concour.rs index ea80fae..037d7f7 100644 --- a/src/db/concour.rs +++ b/src/db/concour.rs @@ -51,6 +51,7 @@ pub struct Concour { pub status: ConcourStatus, pub winner: Vec, pub last_message_id: Option, + pub ping_concour: Option, } impl Default for Concour { @@ -69,6 +70,7 @@ impl Default for Concour { status: ConcourStatus::Created, winner: Vec::new(), last_message_id: None, + ping_concour: None, } } } @@ -89,6 +91,7 @@ impl Concour { status: ConcourStatus::Created, winner: Vec::new(), last_message_id: None, + ping_concour: None, }) } #[instrument(level = "info")]