diff --git a/src/handler/sern.ts b/src/handler/sern.ts index 1d65856..3b7207c 100644 --- a/src/handler/sern.ts +++ b/src/handler/sern.ts @@ -12,8 +12,9 @@ import type { } from 'discord.js'; import { Ok, Result, None, Some } from 'ts-results'; -import { isBot, hasPrefix, fmt } from './utilities/messageHelpers'; +import { isNotFromBot, hasPrefix, fmt } from './utilities/messageHelpers'; import Logger from './logger'; +import { AllTrue } from './utilities/higherOrders'; /** * @class @@ -44,7 +45,9 @@ export class Handler { }) .on('messageCreate', async (message: Message) => { - if (isBot(message) || !hasPrefix(message, this.prefix)) return; + const isExecutable = AllTrue( isNotFromBot, hasPrefix ); + if(!isExecutable(message, this.prefix)) return; + if (message.channel.type === 'DM') return; // TODO: Handle dms const tryFmt = fmt(message, this.prefix); diff --git a/src/handler/utilities/higherOrders.ts b/src/handler/utilities/higherOrders.ts new file mode 100644 index 0000000..f5f55a4 --- /dev/null +++ b/src/handler/utilities/higherOrders.ts @@ -0,0 +1,11 @@ +import type { Message } from "discord.js"; + +type MsgFnArgs = [msgOrInter: Message, prefix?: string]; +type MsgFn = (...args: MsgFnArgs) => boolean; + +export function AllTrue(...fn : MsgFn[]) { + return (message: Message, prefix: string) => { + return fn.every(f => f(message, prefix) === true) + } +} + diff --git a/src/handler/utilities/messageHelpers.ts b/src/handler/utilities/messageHelpers.ts index 8fb4132..0339990 100644 --- a/src/handler/utilities/messageHelpers.ts +++ b/src/handler/utilities/messageHelpers.ts @@ -6,8 +6,8 @@ import type { Message } from 'discord.js'; * @example * isBot(message) ? 'yes it is a bot' : 'no it is not a bot'; */ -export function isBot(message: Message) { - return message.author.bot; +export function isNotFromBot(message: Message) { + return !message.author.bot; } /** * Checks if the message **starts** with the prefix @@ -17,8 +17,8 @@ export function isBot(message: Message) { * @example * hasPrefix(message, '!') ? 'yes it does' : 'no it does not'; */ -export function hasPrefix(message: Message, prefix: string) { - return message.content.slice(0, prefix.length).toLowerCase().trim() === prefix; +export function hasPrefix(message: Message, prefix?: string) { + return message.content.startsWith(prefix!); } /** * Removes the first character(s) _[depending on prefix length]_ of the message