Yet another Fluxer bot built with TypeScript and Bun
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}