84 lines
3.5 KiB
TypeScript
84 lines
3.5 KiB
TypeScript
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<void> {
|
|
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<void> {
|
|
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<void> {
|
|
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<void> {
|
|
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.`);
|
|
}
|