feat: test avec message pour dar
This commit is contained in:
parent
57ef7c0679
commit
1b2f0e25ac
@ -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 {
|
||||
|
@ -25,6 +25,7 @@ pub async fn update(
|
||||
#[description = "Description du concour"] description: Option<String>,
|
||||
#[description = "Banniére du concour"] banner: Option<String>,
|
||||
#[description = "Role récompense"] role_recompense: Option<Role>,
|
||||
#[description = "Role ping concour"] ping_concour: Option<Role>,
|
||||
) -> 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
|
||||
|
@ -17,6 +17,7 @@ pub async fn update_concour(
|
||||
title: Option<String>,
|
||||
description: Option<String>,
|
||||
role_recopense: Option<u64>,
|
||||
role_ping_concour: Option<u64>,
|
||||
banner: Option<String>,
|
||||
) -> Result<Option<Concour>, 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(_) => {}
|
||||
|
@ -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))]
|
||||
|
@ -51,6 +51,7 @@ pub struct Concour {
|
||||
pub status: ConcourStatus,
|
||||
pub winner: Vec<ConcourWinner>,
|
||||
pub last_message_id: Option<u64>,
|
||||
pub ping_concour: Option<u64>,
|
||||
}
|
||||
|
||||
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")]
|
||||
|
Loading…
Reference in New Issue
Block a user