From ad266ef97cf8624f5590bddbf45e7a39f486e9c5 Mon Sep 17 00:00:00 2001 From: Taken Date: Sun, 31 Dec 2023 18:14:29 +0100 Subject: [PATCH] Added error log channel --- config/options.json | 1 + src/utils/eventHandlers/autocomplete.ts | 20 +++++++++++++++++++- src/utils/eventHandlers/button.ts | 20 +++++++++++++++++++- src/utils/eventHandlers/command.ts | 21 ++++++++++++++++++++- src/utils/eventHandlers/contextmenu.ts | 20 +++++++++++++++++++- src/utils/eventHandlers/modal.ts | 20 +++++++++++++++++++- 6 files changed, 97 insertions(+), 5 deletions(-) diff --git a/config/options.json b/config/options.json index be7adb4..0c215e2 100644 --- a/config/options.json +++ b/config/options.json @@ -9,5 +9,6 @@ "onlineLogChannel": "1101144489306886226", "botLogChannel": "1174403585149243472", "guildLogChannel": "1183733282534326322", + "errorLogChannel": "1191051275442339951", "instructionsgif": "https://cdn.discordapp.com/attachments/838716950723952640/1188211176300089384/4DMu513uNxbM.gif?ex=6599b2e4&is=65873de4&hm=e727c7a39aacbc47d6a5453f4b5f792a45679983c30d662cd258a311381b6df0&" } diff --git a/src/utils/eventHandlers/autocomplete.ts b/src/utils/eventHandlers/autocomplete.ts index 1da0bd7..37e7fb1 100644 --- a/src/utils/eventHandlers/autocomplete.ts +++ b/src/utils/eventHandlers/autocomplete.ts @@ -1,9 +1,11 @@ import { ExtendedClient as Client } from "../Client" +import { errorLogChannel, color } from "../../../config/options.json" import { Autocomplete } from "../../interfaces" -import { Events } from "discord.js" +import { Events, GuildTextBasedChannel } from "discord.js" import path = require("path") import fs = require("fs") import { FileType } from "../../typings" +const embedColor = Number(color.replace("#", "0x")) export default function loadAutocompleteEvents(client: Client, ft: FileType) { const autocompletePath = path.join( @@ -49,6 +51,22 @@ export default function loadAutocompleteEvents(client: Client, ft: FileType) { try { await autocomplete.execute(interaction) } catch (error) { + const channel = client.channels.cache.get(errorLogChannel) as GuildTextBasedChannel + if (!channel) { + console.log("No error log channel found.") + } + + await channel.send({ + embeds: [{ + title: "Autocomplete error occured", + description: String(error), + color: embedColor, + footer: { + icon_url: interaction.guild!.iconURL({ forceStatic: false })!, + text: interaction.user.username + " | " + interaction.commandName + } + }], + }) console.error(error) } }) diff --git a/src/utils/eventHandlers/button.ts b/src/utils/eventHandlers/button.ts index 28ec0e8..54fa0f4 100644 --- a/src/utils/eventHandlers/button.ts +++ b/src/utils/eventHandlers/button.ts @@ -1,9 +1,11 @@ import { ExtendedClient as Client } from "../Client" +import { errorLogChannel, color } from "../../../config/options.json" import { Button } from "../../interfaces" -import { Events } from "discord.js" +import { Events, GuildTextBasedChannel } from "discord.js" import path = require("path") import fs = require("fs") import { FileType } from "../../typings" +const embedColor = Number(color.replace("#", "0x")) export default function loadButtonEvents(client: Client, ft: FileType) { const btnPath = path.join(__dirname, "..", "..", "events", "buttons") @@ -37,6 +39,22 @@ export default function loadButtonEvents(client: Client, ft: FileType) { try { await button.execute(interaction) } catch (error) { + const channel = client.channels.cache.get(errorLogChannel) as GuildTextBasedChannel + if (!channel) { + console.log("No error log channel found.") + } + + await channel.send({ + embeds: [{ + title: "Button error occured", + description: String(error), + color: embedColor, + footer: { + icon_url: interaction.guild!.iconURL({ forceStatic: false })!, + text: interaction.user.username + " | " + interaction.customId + } + }], + }) console.error(error) await interaction.reply({ content: "There was an error while executing this event!", diff --git a/src/utils/eventHandlers/command.ts b/src/utils/eventHandlers/command.ts index 75c346d..95be3e1 100644 --- a/src/utils/eventHandlers/command.ts +++ b/src/utils/eventHandlers/command.ts @@ -1,9 +1,11 @@ import { ExtendedClient as Client } from "../Client" +import { errorLogChannel, color } from "../../../config/options.json" import { Command } from "../../interfaces" -import { Events } from "discord.js" +import { Events, GuildTextBasedChannel } from "discord.js" import path = require("path") import fs = require("fs") import { FileType } from "../../typings" +const embedColor = Number(color.replace("#", "0x")) export default function loadSlashCommandsEvents(client: Client, ft: FileType) { const cmdPath = path.join(__dirname, "..", "..", "commands") @@ -38,6 +40,23 @@ export default function loadSlashCommandsEvents(client: Client, ft: FileType) { try { await command.execute(interaction, client) } catch (error) { + const channel = client.channels.cache.get(errorLogChannel) as GuildTextBasedChannel + if (!channel) { + console.log("No error log channel found.") + } + + await channel.send({ + embeds: [{ + title: "Command error occured", + description: String(error), + color: embedColor, + footer: { + icon_url: interaction.guild!.iconURL({ forceStatic: false })!, + text: interaction.user.username + " | " + interaction.commandName + } + }], + }) + console.error(error) await interaction.reply({ content: "There was an error while executing this command!", diff --git a/src/utils/eventHandlers/contextmenu.ts b/src/utils/eventHandlers/contextmenu.ts index fd17917..bbbfd07 100644 --- a/src/utils/eventHandlers/contextmenu.ts +++ b/src/utils/eventHandlers/contextmenu.ts @@ -1,9 +1,11 @@ import { ExtendedClient as Client } from "../Client" import { ContextMenu } from "../../interfaces" -import { Events } from "discord.js" +import { errorLogChannel, color } from "../../../config/options.json" +import { Events, GuildTextBasedChannel } from "discord.js" import path = require("path") import fs = require("fs") import { FileType } from "../../typings" +const embedColor = Number(color.replace("#", "0x")) export default function loadContextMenuEvents(client: Client, ft: FileType) { const contextMenuPath = path.join( @@ -45,6 +47,22 @@ export default function loadContextMenuEvents(client: Client, ft: FileType) { try { await command.execute(interaction) } catch (error) { + const channel = client.channels.cache.get(errorLogChannel) as GuildTextBasedChannel + if (!channel) { + console.log("No error log channel found.") + } + + await channel.send({ + embeds: [{ + title: "Contextmenu error occured", + description: String(error), + color: embedColor, + footer: { + icon_url: interaction.guild!.iconURL({ forceStatic: false })!, + text: interaction.user.username + " | " + interaction.commandName + } + }], + }) console.error(error) await interaction.reply({ content: "There was an error while executing this command!", diff --git a/src/utils/eventHandlers/modal.ts b/src/utils/eventHandlers/modal.ts index 161631a..29e1883 100644 --- a/src/utils/eventHandlers/modal.ts +++ b/src/utils/eventHandlers/modal.ts @@ -1,9 +1,11 @@ import { ExtendedClient as Client } from "../Client" +import { errorLogChannel, color } from "../../../config/options.json" import { Modal } from "../../interfaces" -import { Events } from "discord.js" +import { Events, GuildTextBasedChannel } from "discord.js" import path = require("path") import fs = require("fs") import { FileType } from "../../typings" +const embedColor = Number(color.replace("#", "0x")) export default function loadModalEvents(client: Client, ft: FileType) { const modalPath = path.join(__dirname, "..", "..", "events", "modals") @@ -40,6 +42,22 @@ export default function loadModalEvents(client: Client, ft: FileType) { await modal.execute(interaction) } catch (error) { console.error(error) + const channel = client.channels.cache.get(errorLogChannel) as GuildTextBasedChannel + if (!channel) { + console.log("No error log channel found.") + } + + await channel.send({ + embeds: [{ + title: "Button error occured", + description: String(error), + color: embedColor, + footer: { + icon_url: interaction.guild!.iconURL({ forceStatic: false })!, + text: interaction.user.username + " | " + interaction.customId + } + }], + }) await interaction.reply({ content: "There was an error while executing this modal!", ephemeral: true,