Records context menu command
This commit is contained in:
@@ -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');
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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');
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -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';
|
||||||
|
|||||||
@@ -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] });
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user