import "reflect-metadata"; import type { Message } from "@fluxerjs/core"; export const GUARDS_KEY = Symbol("fluxer:guards"); export type Guard = (msg: Message) => boolean | Promise; export function RequireNonBot(): ClassDecorator { return (target) => { const guards: Guard[] = Reflect.getMetadata(GUARDS_KEY, target) ?? []; guards.push((msg) => !msg.author.bot); Reflect.defineMetadata(GUARDS_KEY, guards, target); }; } export function RequirePrefix(prefix: string): ClassDecorator { return (target) => { const guards: Guard[] = Reflect.getMetadata(GUARDS_KEY, target) ?? []; guards.push((msg) => msg.content.startsWith(prefix)); Reflect.defineMetadata(GUARDS_KEY, guards, target); }; }