Some checks failed
Build and Push Docker Image / build-and-push (push) Failing after 5m5s
50 lines
2.8 KiB
TypeScript
50 lines
2.8 KiB
TypeScript
import { Events } from "discord.js"
|
|
import type { Interaction } from "discord.js"
|
|
import commands from "@/commands"
|
|
import buttons, { buttonFolders } from "@/buttons"
|
|
import selectMenus from "@/selectmenus"
|
|
import { playerEdit } from "@/utils/player"
|
|
import { logConsole, logConsoleError } from "@/utils/console"
|
|
|
|
export const name = Events.InteractionCreate
|
|
export async function execute(interaction: Interaction) {
|
|
if (interaction.isChatInputCommand()) {
|
|
const chatInputCommand = commands.find(cmd => cmd.data.name == interaction.commandName)
|
|
if (!chatInputCommand) { logConsole('discordjs', 'interaction_create.command_not_found', { command: interaction.commandName }); return }
|
|
|
|
logConsole('discordjs', 'interaction_create.command_launched', { command: interaction.commandName, user: interaction.user.tag })
|
|
|
|
try { await chatInputCommand.execute(interaction) }
|
|
catch (error) { logConsoleError('discordjs', 'interaction_create.command_error', { command: interaction.commandName }, error as Error) }
|
|
}
|
|
else if (interaction.isAutocomplete()) {
|
|
const autocompleteRun = commands.find(cmd => cmd.data.name == interaction.commandName)
|
|
if (!autocompleteRun?.autocompleteRun) { logConsole('discordjs', 'interaction_create.autocomplete_not_found', { command: interaction.commandName }); return }
|
|
|
|
logConsole('discordjs', 'interaction_create.autocomplete_launched', { command: interaction.commandName, user: interaction.user.tag })
|
|
|
|
try { await autocompleteRun.autocompleteRun(interaction) }
|
|
catch (error) { logConsoleError('discordjs', 'interaction_create.autocomplete_error', { command: interaction.commandName }, error as Error) }
|
|
}
|
|
else if (interaction.isButton()) {
|
|
const button = buttons.find(btn => btn.id === interaction.customId)
|
|
if (!button) { logConsole('discordjs', 'interaction_create.button_not_found', { id: interaction.customId }); return }
|
|
|
|
logConsole('discordjs', 'interaction_create.button_clicked', { id: interaction.customId, user: interaction.user.tag })
|
|
|
|
try { await button.execute(interaction) }
|
|
catch (error) { logConsoleError('discordjs', 'interaction_create.button_error', { id: interaction.customId }, error as Error) }
|
|
|
|
if (buttonFolders.find(folder => folder.name === "player" ? folder.commands.some(cmd => cmd.id === interaction.customId) : false)) await playerEdit(interaction)
|
|
}
|
|
else if (interaction.isAnySelectMenu()) {
|
|
const selectMenu = selectMenus.find(menu => menu.id === interaction.customId)
|
|
if (!selectMenu) { logConsole('discordjs', 'interaction_create.selectmenu_not_found', { id: interaction.customId }); return }
|
|
|
|
logConsole('discordjs', 'interaction_create.selectmenu_used', { id: interaction.customId, user: interaction.user.tag })
|
|
|
|
try { await selectMenu.execute(interaction) }
|
|
catch (error) { logConsoleError('discordjs', 'interaction_create.selectmenu_error', { id: interaction.customId }, error as Error) }
|
|
}
|
|
}
|