Records context menu command

This commit is contained in:
Tarrgon
2025-06-01 08:35:55 -04:00
parent cec8449b6d
commit 9622795935
6 changed files with 39 additions and 15 deletions
+2 -5
View File
@@ -1,6 +1,6 @@
import { ApplicationIntegrationType, ChatInputCommandInteraction, Client, GuildBasedChannel, InteractionContextType, MessageFlags, PermissionFlagsBits, SlashCommandBuilder } from 'discord.js'; import { ApplicationIntegrationType, ChatInputCommandInteraction, Client, GuildBasedChannel, InteractionContextType, MessageFlags, PermissionFlagsBits, SlashCommandBuilder } from 'discord.js';
import { Database } from '../shared/Database'; import { Database } from '../shared/Database';
import { channelIsInStaffCategory, getDiscordAlts, getE621User } from '../utils'; import { channelIsInStaffCategory, deferInteraction, getDiscordAlts, getE621User } from '../utils';
import { config } from '../config'; import { config } from '../config';
export default { export default {
@@ -24,10 +24,7 @@ export default {
.setRequired(false) .setRequired(false)
), ),
handler: async function (client: Client, interaction: ChatInputCommandInteraction) { handler: async function (client: Client, interaction: ChatInputCommandInteraction) {
const isStaffChannel = await channelIsInStaffCategory(interaction.channel as GuildBasedChannel); await deferInteraction(interaction);
if (isStaffChannel) await interaction.deferReply();
else await interaction.deferReply({ flags: [MessageFlags.Ephemeral] });
if (!interaction.guild) return interaction.editReply('This command must be used in a server'); if (!interaction.guild) return interaction.editReply('This command must be used in a server');
+2 -5
View File
@@ -1,6 +1,6 @@
import { ApplicationCommandOptionType, ApplicationIntegrationType, AutocompleteInteraction, ChatInputCommandInteraction, Client, GuildBasedChannel, InteractionContextType, MessageFlags, PermissionFlagsBits, SlashCommandBuilder } from 'discord.js'; import { ApplicationCommandOptionType, ApplicationIntegrationType, AutocompleteInteraction, ChatInputCommandInteraction, Client, GuildBasedChannel, InteractionContextType, MessageFlags, PermissionFlagsBits, SlashCommandBuilder } from 'discord.js';
import { Database } from '../shared/Database'; import { Database } from '../shared/Database';
import { channelIsInStaffCategory } from '../utils'; import { channelIsInStaffCategory, deferInteraction } from '../utils';
import { getNoteMessage } from '../utils/note-utils'; import { getNoteMessage } from '../utils/note-utils';
export default { export default {
@@ -61,10 +61,7 @@ export default {
const subcommand = interaction.options.getSubcommand(true); const subcommand = interaction.options.getSubcommand(true);
const user = interaction.options.getUser('user', true); const user = interaction.options.getUser('user', true);
const isStaffChannel = await channelIsInStaffCategory(interaction.channel as GuildBasedChannel); await deferInteraction(interaction);
if (isStaffChannel) await interaction.deferReply();
else await interaction.deferReply({ flags: [MessageFlags.Ephemeral] });
if (subcommand == 'add') { if (subcommand == 'add') {
const reason = interaction.options.getString('reason', true); const reason = interaction.options.getString('reason', true);
+2 -5
View File
@@ -1,5 +1,5 @@
import { ApplicationIntegrationType, BitFieldResolvable, ChatInputCommandInteraction, Client, GuildBasedChannel, InteractionContextType, MessageFlags, PermissionFlagsBits, SlashCommandBuilder } from 'discord.js'; import { ApplicationIntegrationType, BitFieldResolvable, ChatInputCommandInteraction, Client, GuildBasedChannel, InteractionContextType, MessageFlags, PermissionFlagsBits, SlashCommandBuilder } from 'discord.js';
import { channelIsInStaffCategory, handleWhoIsInteraction } from '../utils'; import { channelIsInStaffCategory, deferInteraction, handleWhoIsInteraction } from '../utils';
import { getRecordMessageFromDiscordId } from '../utils/record-utils'; import { getRecordMessageFromDiscordId } from '../utils/record-utils';
export default { export default {
@@ -23,10 +23,7 @@ export default {
.setRequired(false) .setRequired(false)
), ),
handler: async function (client: Client, interaction: ChatInputCommandInteraction) { handler: async function (client: Client, interaction: ChatInputCommandInteraction) {
const isStaffChannel = await channelIsInStaffCategory(interaction.channel as GuildBasedChannel); await deferInteraction(interaction);
if (isStaffChannel) await interaction.deferReply();
else await interaction.deferReply({ flags: [MessageFlags.Ephemeral] });
if (!interaction.guild) return interaction.editReply('This command must be used in a server'); if (!interaction.guild) return interaction.editReply('This command must be used in a server');
+23
View File
@@ -0,0 +1,23 @@
import { ApplicationIntegrationType, Client, InteractionContextType, PermissionFlagsBits, ContextMenuCommandBuilder, ApplicationCommandType, UserContextMenuCommandInteraction, GuildBasedChannel, MessageFlags } from 'discord.js';
import { channelIsInStaffCategory, deferInteraction, getRecordMessageFromDiscordId, handleWhoIsInteraction } from '../utils';
export default {
name: 'Get Records',
data: new ContextMenuCommandBuilder()
.setName('Get Records')
.setIntegrationTypes(ApplicationIntegrationType.GuildInstall)
.setContexts(InteractionContextType.Guild)
.setDefaultMemberPermissions(PermissionFlagsBits.BanMembers)
.setType(ApplicationCommandType.User),
handler: async function (client: Client, interaction: UserContextMenuCommandInteraction) {
await deferInteraction(interaction);
const idToUse = interaction.targetUser.id;
const recordMessage = await getRecordMessageFromDiscordId(idToUse, 1, interaction.guild!);
if (!recordMessage) return interaction.editReply('No records found on any linked accounts.');
interaction.editReply(recordMessage);
}
};
+1
View File
@@ -4,6 +4,7 @@ export * from './audit-log-utils';
export * from './channel-utils'; export * from './channel-utils';
export * from './commands'; export * from './commands';
export * from './e621-utils'; export * from './e621-utils';
export * from './interaction-utils';
export * from './message-logger'; export * from './message-logger';
export * from './message-utils'; export * from './message-utils';
export * from './ms-to-human'; export * from './ms-to-human';
+9
View File
@@ -0,0 +1,9 @@
import { ChatInputCommandInteraction, ContextMenuCommandInteraction, GuildBasedChannel, MessageFlags } from 'discord.js';
import { channelIsInStaffCategory } from './channel-utils';
export async function deferInteraction(interaction: ChatInputCommandInteraction | ContextMenuCommandInteraction) {
const isStaffChannel = await channelIsInStaffCategory(interaction.channel as GuildBasedChannel);
if (isStaffChannel) await interaction.deferReply();
else await interaction.deferReply({ flags: [MessageFlags.Ephemeral] });
}