From 93cb51a975ce457d6091dc7b0230610f3b958bef Mon Sep 17 00:00:00 2001 From: hunter <61890674+hunt-g@users.noreply.github.com> Date: Fri, 24 Mar 2023 20:54:20 -0600 Subject: feat(MessageEvents): Promisable send/edit listeners (#514) * promisable send/edit listeners * added self * Apply suggestions from code review Co-authored-by: Nuckyz <61953774+Nuckyz@users.noreply.github.com> * fix patches --------- Co-authored-by: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Co-authored-by: Ven --- src/api/MessageEvents.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/api') diff --git a/src/api/MessageEvents.ts b/src/api/MessageEvents.ts index 1bf6b0b..aaf8d40 100644 --- a/src/api/MessageEvents.ts +++ b/src/api/MessageEvents.ts @@ -19,6 +19,7 @@ import Logger from "@utils/Logger"; import { MessageStore } from "@webpack/common"; import type { Channel, Message } from "discord-types/general"; +import type { Promisable } from "type-fest"; const MessageEventsLogger = new Logger("MessageEvents", "#e5c890"); @@ -41,16 +42,16 @@ export interface MessageExtra { stickerIds?: string[]; } -export type SendListener = (channelId: string, messageObj: MessageObject, extra: MessageExtra) => void | { cancel: boolean; }; -export type EditListener = (channelId: string, messageId: string, messageObj: MessageObject) => void; +export type SendListener = (channelId: string, messageObj: MessageObject, extra: MessageExtra) => Promisable; +export type EditListener = (channelId: string, messageId: string, messageObj: MessageObject) => Promisable; const sendListeners = new Set(); const editListeners = new Set(); -export function _handlePreSend(channelId: string, messageObj: MessageObject, extra: MessageExtra) { +export async function _handlePreSend(channelId: string, messageObj: MessageObject, extra: MessageExtra) { for (const listener of sendListeners) { try { - const result = listener(channelId, messageObj, extra); + const result = await listener(channelId, messageObj, extra); if (result && result.cancel === true) { return true; } @@ -61,10 +62,10 @@ export function _handlePreSend(channelId: string, messageObj: MessageObject, ext return false; } -export function _handlePreEdit(channelId: string, messageId: string, messageObj: MessageObject) { +export async function _handlePreEdit(channelId: string, messageId: string, messageObj: MessageObject) { for (const listener of editListeners) { try { - listener(channelId, messageId, messageObj); + await listener(channelId, messageId, messageObj); } catch (e) { MessageEventsLogger.error("MessageEditHandler: Listener encountered an unknown error\n", e); } -- cgit