From 0311838d59d7071a37ea932a094dbab0c26e84c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Rom=C3=A1n?= Date: Sun, 7 Feb 2021 14:29:07 +0100 Subject: [PATCH] feat(events): create Events.PreMessageParsed (#164) BREAKING CHANGE: CoreMessageParser is not longer a message event listener --- src/events/command-handler/CoreMessage.ts | 18 ++++++++++++++++++ .../command-handler/CoreMessageParser.ts | 7 ++----- src/lib/types/Events.ts | 2 ++ 3 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 src/events/command-handler/CoreMessage.ts diff --git a/src/events/command-handler/CoreMessage.ts b/src/events/command-handler/CoreMessage.ts new file mode 100644 index 000000000..a94a5eb13 --- /dev/null +++ b/src/events/command-handler/CoreMessage.ts @@ -0,0 +1,18 @@ +import type { PieceContext } from '@sapphire/pieces'; +import type { Message } from 'discord.js'; +import { Event } from '../../lib/structures/Event'; +import { Events } from '../../lib/types/Events'; + +export class CoreEvent extends Event { + public constructor(context: PieceContext) { + super(context, { event: Events.Message }); + } + + public run(message: Message) { + // Stop bots and webhooks from running commands. + if (message.author.bot || message.webhookID) return; + + // Run the message parser. + this.context.client.emit(Events.PreMessageParsed, message); + } +} diff --git a/src/events/command-handler/CoreMessageParser.ts b/src/events/command-handler/CoreMessageParser.ts index 7fec0e6c7..cd86e9a74 100644 --- a/src/events/command-handler/CoreMessageParser.ts +++ b/src/events/command-handler/CoreMessageParser.ts @@ -3,16 +3,13 @@ import { Message, NewsChannel, Permissions, TextChannel } from 'discord.js'; import { Event } from '../../lib/structures/Event'; import { Events } from '../../lib/types/Events'; -export class CoreEvent extends Event { +export class CoreEvent extends Event { private readonly requiredPermissions = new Permissions(['VIEW_CHANNEL', 'SEND_MESSAGES']).freeze(); public constructor(context: PieceContext) { - super(context, { event: Events.Message }); + super(context, { event: Events.PreMessageParsed }); } public async run(message: Message) { - // Stop bots and webhooks from running commands. - if (message.author.bot || message.webhookID) return; - // If the bot cannot run the command due to lack of permissions, return. const canRun = await this.canRunInChannel(message); if (!canRun) return; diff --git a/src/lib/types/Events.ts b/src/lib/types/Events.ts index 9ca829890..fa0da9689 100644 --- a/src/lib/types/Events.ts +++ b/src/lib/types/Events.ts @@ -64,6 +64,7 @@ export enum Events { PiecePostLoad = 'piecePostLoad', MentionPrefixOnly = 'mentionPrefixOnly', EventError = 'eventError', + PreMessageParsed = 'preMessageParsed', PrefixedMessage = 'prefixedMessage', UnknownCommandName = 'unknownCommandName', UnknownCommand = 'unknownCommand', @@ -118,6 +119,7 @@ declare module 'discord.js' { [Events.PiecePostLoad]: [Store, Piece]; [Events.MentionPrefixOnly]: [Message]; [Events.EventError]: [Error, EventErrorPayload]; + [Events.PreMessageParsed]: [Message]; [Events.PrefixedMessage]: [Message, string | RegExp]; [Events.UnknownCommandName]: [Message, string | RegExp]; [Events.UnknownCommand]: [Message, string, string | RegExp];