Reformatted the dice roll buttons

This commit is contained in:
2024-12-20 15:47:49 -05:00
parent 8ac0e59b8c
commit 642e2c8d66
10 changed files with 104 additions and 74 deletions

View File

@@ -1,6 +1,9 @@
use std::env;
use std::sync::{Arc, OnceLock};
use serenity::all::{CreateEmbed, CreateInteractionResponse, CreateInteractionResponseMessage, EditInteractionResponse, Interaction, ResumedEvent, UserId};
use serenity::all::{
CreateEmbed, CreateInteractionResponse, CreateInteractionResponseMessage,
EditInteractionResponse, Interaction, ResumedEvent, UserId,
};
use serenity::async_trait;
use serenity::model::gateway::Ready;
use serenity::model::channel::Message;
@@ -175,7 +178,10 @@ impl EventHandler for BotHandler {
let custom_id = &component.data.custom_id;
if custom_id.starts_with("request_dice_roll") {
// Acknowledge the interaction
if let Err(err) = component.create_response(ctx.http.clone(), CreateInteractionResponse::Acknowledge).await {
if let Err(err) = component
.create_response(ctx.http.clone(), CreateInteractionResponse::Acknowledge)
.await
{
log::error!("Could not create dice response: {}", err);
};
let parts = custom_id.split('|').collect::<Vec<&str>>();
@@ -188,15 +194,36 @@ impl EventHandler for BotHandler {
let user_id = UserId::from(parts[4].parse::<u64>().unwrap());
let roller_id = component.user.id;
let hidden: bool = parts[5].parse().unwrap();
send_roll_message(&ctx, result, user_id, roller_id, &response).await;
component.delete_response(ctx.http.clone()).await.ok();
let message;
if hidden {
message = format!("Results sent to {}", user_id.mention());
// Prepare the message based on visibility
let new_message = if hidden {
// For hidden rolls, only reveal "results sent" to the requester
format!("🎲 Results sent to {}\n-# {}", user_id.mention(), response)
} else {
message = format!("🎲 You rolled {} {}\n-# {}", a_or_an(&number_to_words(result)), result, response);
// For public rolls, show the roll result
format!(
"🎲 You rolled {} {}\n-# {}",
a_or_an(&number_to_words(result)),
result,
response
)
};
// Edit the message to update the text and remove buttons
if let Err(err) = component
.edit_response(
ctx.http.clone(),
EditInteractionResponse::new()
.content(new_message)
.components(Vec::new()),
)
.await
{
log::error!("Could not update dice roll message: {}", err);
}
user_dm(&ctx, &component.user.id, message).await;
// Send message to the requester
send_roll_message(&ctx, result, user_id, roller_id, &response).await;
} else {
log::error!("Could not handle dice click: {}", custom_id);
}