Yet another Fluxer bot built with TypeScript and Bun
at feat/sqlite 21 lines 731 B view raw
1import "reflect-metadata"; 2import type { Message } from "@fluxerjs/core"; 3 4export const GUARDS_KEY = Symbol("fluxer:guards"); 5export type Guard = (msg: Message) => boolean | Promise<boolean>; 6 7export function RequireNonBot(): ClassDecorator { 8 return (target) => { 9 const guards: Guard[] = Reflect.getMetadata(GUARDS_KEY, target) ?? []; 10 guards.push((msg) => !msg.author.bot); 11 Reflect.defineMetadata(GUARDS_KEY, guards, target); 12 }; 13} 14 15export function RequirePrefix(prefix: string): ClassDecorator { 16 return (target) => { 17 const guards: Guard[] = Reflect.getMetadata(GUARDS_KEY, target) ?? []; 18 guards.push((msg) => msg.content.startsWith(prefix)); 19 Reflect.defineMetadata(GUARDS_KEY, guards, target); 20 }; 21}