import { ChatInputCommandInteraction } from "discord.js"; import { Config } from "../../systems/config"; import { setPublicOverride, clearPublicOverride, setEphemeralOverride, clearEphemeralOverride } from "../../systems/poll"; import { replyAndDelete } from "../../utils"; import { hasOfficerRole } from "../../systems/users"; export async function handleSetMessage(interaction: ChatInputCommandInteraction): Promise { const nameArg = interaction.options.getString("name"); const voteType = interaction.options.getString("vote_type", true) as "yes" | "no"; const message = interaction.options.getString("message", true); // Resolve target user let targetUserId: string; if (nameArg) { const member = interaction.guild!.members.cache.find( (m) => (m.nickname ?? m.user.globalName ?? m.user.username) === nameArg ); if (!member) return void replyAndDelete(interaction, `❌ Could not find member "${nameArg}".`); targetUserId = member.user.id; } else { targetUserId = interaction.user.id; } setPublicOverride(targetUserId, voteType, message); return void replyAndDelete(interaction, `✅ Public message set for **${voteType}** vote.`); } export async function handleClearMessage(interaction: ChatInputCommandInteraction): Promise { const nameArg = interaction.options.getString("name"); const voteType = interaction.options.getString("vote_type") as "yes" | "no" | null; let targetUserId: string; if (nameArg) { const member = interaction.guild!.members.cache.find( (m) => (m.nickname ?? m.user.globalName ?? m.user.username) === nameArg ); if (!member) return void replyAndDelete(interaction, `❌ Could not find member "${nameArg}".`); targetUserId = member.user.id; } else { targetUserId = interaction.user.id; } clearPublicOverride(targetUserId, voteType ?? undefined); return void replyAndDelete(interaction, `✅ Public message override cleared.`); } export async function handleSetEphemeral(interaction: ChatInputCommandInteraction): Promise { const nameArg = interaction.options.getString("name"); const voteType = interaction.options.getString("vote_type", true) as "yes" | "no"; const message = interaction.options.getString("message", true); let targetUserId: string; if (nameArg) { const member = interaction.guild!.members.cache.find( (m) => (m.nickname ?? m.user.globalName ?? m.user.username) === nameArg ); if (!member) return void replyAndDelete(interaction, `❌ Could not find member "${nameArg}".`); targetUserId = member.user.id; } else { targetUserId = interaction.user.id; } setEphemeralOverride(targetUserId, voteType, message); return void replyAndDelete(interaction, `✅ Ephemeral message set for **${voteType}** vote.`); } export async function handleClearEphemeral(interaction: ChatInputCommandInteraction): Promise { const nameArg = interaction.options.getString("name"); const voteType = interaction.options.getString("vote_type") as "yes" | "no" | null; let targetUserId: string; if (nameArg) { const member = interaction.guild!.members.cache.find( (m) => (m.nickname ?? m.user.globalName ?? m.user.username) === nameArg ); if (!member) return void replyAndDelete(interaction, `❌ Could not find member "${nameArg}".`); targetUserId = member.user.id; } else { targetUserId = interaction.user.id; } clearEphemeralOverride(targetUserId, voteType ?? undefined); return void replyAndDelete(interaction, `✅ Ephemeral message override cleared.`); }