From 1e2966dfa93c25cf5c4af6396c53e5c65ea0a37f Mon Sep 17 00:00:00 2001 From: GRZ4NA Date: Tue, 7 Sep 2021 20:30:51 +0200 Subject: [PATCH] fixed not found message not firing and added some minor changes --- src/managers/MessageCommandManager.ts | 4 ++-- src/managers/SystemMessage.ts | 8 ++++---- src/structures/Bot.ts | 2 +- src/structures/Parameter.ts | 14 ++++++++++++++ 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/managers/MessageCommandManager.ts b/src/managers/MessageCommandManager.ts index c35014b..5a2607c 100644 --- a/src/managers/MessageCommandManager.ts +++ b/src/managers/MessageCommandManager.ts @@ -3,7 +3,7 @@ import { CommandInteractionData } from "../types/commands.js"; import { MessageCommand } from "../structures/MessageCommand.js"; import { CommandManager } from "./CommandManager.js"; import { CommandNotFound } from "../errors.js"; -import { ObjectParameter, Parameter } from "../structures/Parameter.js"; +import { Parameter, TargetParameter } from "../structures/Parameter.js"; export class MessageCommandManager extends CommandManager { protected readonly _list: MessageCommand[] = []; @@ -31,7 +31,7 @@ export class MessageCommandManager extends CommandManager { optional: false, type: "target", }); - const inputParameter = new ObjectParameter(parameter, i.targetId); + const inputParameter = new TargetParameter(parameter, i.targetId); return { command: command, parameters: [inputParameter], diff --git a/src/managers/SystemMessage.ts b/src/managers/SystemMessage.ts index cb06c10..8f6a82f 100644 --- a/src/managers/SystemMessage.ts +++ b/src/managers/SystemMessage.ts @@ -1,4 +1,4 @@ -import { CommandInteraction, Message, MessageEmbed } from "discord.js"; +import { Interaction, Message, MessageEmbed } from "discord.js"; import { SystemMessageAppearance, SystemMessageData, MessageType } from "../types/SystemMessage.js"; export class SystemMessageManager { @@ -78,7 +78,7 @@ export class SystemMessageManager { * @param {Message | CommandInteraction} [interaction] - if specified, the generated message will be sent in this channel * @returns {Promise} A message that got sent or *void* */ - public async send(type: MessageType, data?: SystemMessageData, interaction?: Message | CommandInteraction): Promise { + public async send(type: MessageType, data?: SystemMessageData, interaction?: Message | Interaction): Promise { if (this[type]) { if (this[type].enabled === false) { return; @@ -134,7 +134,7 @@ export class SystemMessageManager { break; } } - if (interaction && !(interaction instanceof CommandInteraction)) { + if (interaction && !(interaction instanceof Interaction)) { const message = await interaction.reply({ embeds: [embed] }); if (message.deletable) { if (Number.isFinite(this[type].deleteTimeout)) { @@ -148,7 +148,7 @@ export class SystemMessageManager { } } return message; - } else if (interaction && interaction instanceof CommandInteraction) { + } else if (interaction && interaction instanceof Interaction && (interaction.isCommand() || interaction.isContextMenu())) { interaction.replied || interaction.deferred ? await interaction.editReply({ embeds: [embed] }) : await interaction.reply({ embeds: [embed] }); if (Number.isFinite(this[type].deleteTimeout)) { setTimeout(async () => { diff --git a/src/structures/Bot.ts b/src/structures/Bot.ts index ac2fbfa..b4832e1 100644 --- a/src/structures/Bot.ts +++ b/src/structures/Bot.ts @@ -236,7 +236,7 @@ export class Bot extends EventEmitter { } else if (e instanceof OperationSuccess) { await this.messages.system.send("SUCCESS", undefined, i as CommandInteraction); } else if (e instanceof CommandNotFound) { - await this.messages.system.send("NOT_FOUND", { user: i.user, phrase: e.query }); + await this.messages.system.send("NOT_FOUND", { user: i.user, phrase: e.query }, i); } else { await this.messages.system.send( "ERROR", diff --git a/src/structures/Parameter.ts b/src/structures/Parameter.ts index e84584c..db9ea5b 100644 --- a/src/structures/Parameter.ts +++ b/src/structures/Parameter.ts @@ -162,3 +162,17 @@ export class NullParameter extends InputParameter { super(parameter, null); } } + +export class TargetParameter extends InputParameter { + constructor(parameter: Parameter, targetId: string) { + super(parameter, targetId); + } + + toMessage(c: TextChannel) { + return c.messages.cache.get(this.value?.toString() || ""); + } + + async toUser(g: Guild) { + return await g.members.fetch({ query: this.value?.toString() }); + } +}