fix: use EMERGENCY_CHANNEL_ID instead of hardcoding channel IDs
All checks were successful
Build and Test / splatie (push) Successful in 10m14s

This commit is contained in:
kittentm 2026-05-12 22:05:02 +02:00
commit 189a36989d
Signed by: kitten
GPG key ID: 394B4EABE4405A83

View file

@ -1,20 +1,38 @@
use serenity::all::{ChannelId, Colour, Command, CommandId, Context, CreateCommand, CreateEmbed, CreateEmbedAuthor, CreateInputText, CreateInteractionResponse, CreateInteractionResponseFollowup, CreateInteractionResponseMessage, CreateMessage, CreateQuickModal, EventHandler, InputTextStyle, Interaction, Message, Ready, Timestamp};
use serenity::all::Change::Color;
use serenity::all::{ChannelId, Colour, Command, CommandId, Context, CreateCommand, CreateEmbed, CreateEmbedAuthor, CreateInputText, CreateInteractionResponse, CreateInteractionResponseMessage, CreateMessage, CreateQuickModal, EventHandler, InputTextStyle, Interaction, Ready, Timestamp};
use serenity::async_trait;
use tokio::sync::OnceCell;
use std::env;
#[derive(Default)]
pub struct EmergencyReportHandler{
command_id: OnceCell<CommandId>
pub struct EmergencyReportHandler {
command_id: OnceCell<CommandId>,
emergency_channel_id: ChannelId,
}
impl Default for EmergencyReportHandler {
fn default() -> Self {
let channel_str = env::var("EMERGENCY_CHANNEL_ID")
.expect("EMERGENCY_CHANNEL_ID must be set in .env");
let id: u64 = channel_str
.parse()
.expect("EMERGENCY_CHANNEL_ID must be a valid u64");
Self {
command_id: OnceCell::new(),
emergency_channel_id: ChannelId::new(id),
}
}
}
#[async_trait]
impl EventHandler for EmergencyReportHandler {
async fn ready(&self, ctx: Context, data_about_bot: Ready) {
async fn ready(&self, ctx: Context, _data_about_bot: Ready) {
let command = CreateCommand::new("emergency-report")
.description("Report an emergency (e.g. server down) ONLY if its happening for everyone not if its just for you.");
let cmd = Command::create_global_command(&ctx.http, command).await.expect("unable to register command");
let cmd = Command::create_global_command(&ctx.http, command)
.await
.expect("unable to register command");
self.command_id.set(cmd.id).ok();
}
@ -28,7 +46,7 @@ impl EventHandler for EmergencyReportHandler {
return;
};
if cmd.data.id != *id{
if cmd.data.id != *id {
return;
}
@ -41,13 +59,13 @@ impl EventHandler for EmergencyReportHandler {
let modal = CreateQuickModal::new("Emergency Report Form")
.field(main_field);
let response = match cmd.quick_modal(&ctx, modal).await{
let response = match cmd.quick_modal(&ctx, modal).await {
Ok(v) => v,
Err(e) => { eprintln!("{}", e); return }
Err(e) => { eprintln!("Modal error: {}", e); return }
};
let Some(response) = response else {
return
return;
};
response.interaction.create_response(&ctx.http, CreateInteractionResponse::Message(
@ -57,10 +75,7 @@ impl EventHandler for EmergencyReportHandler {
)).await.ok();
let text = &response.inputs[0];
let emergency_channel = ChannelId::new(1379768148420591666);
let mut author = CreateEmbedAuthor::from(response.interaction.user);
let author = CreateEmbedAuthor::from(response.interaction.user.clone());
let embed = CreateEmbed::new()
.title("AN EMERGENCY HAS BEEN REPORTED")
@ -73,6 +88,6 @@ impl EventHandler for EmergencyReportHandler {
.content("@everyone")
.add_embed(embed);
emergency_channel.send_message(&ctx.http, message).await.ok();
self.emergency_channel_id.send_message(&ctx.http, message).await.ok();
}
}