tg-bot-ts/src/subcommands/poll/setMessage.ts

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.`);
}