diff --git a/TypeScript/serverOnly.ts b/TypeScript/serverOnly.ts new file mode 100644 index 0000000..ac383fc --- /dev/null +++ b/TypeScript/serverOnly.ts @@ -0,0 +1,43 @@ +// @ts-nocheck +/** + * Checks if a command is available in a specific server. + * + * @author @D3ord3NidAm [<@1017182455926624316>] + * @version 1.0.0 + * @example + * ```ts + * import { commandModule, CommandType } from "@sern/handler"; + * import { serverOnly } from "../plugins/serverOnly"; + * export default commandModule({ + * type: CommandType.Both, + * plugins: [serverOnly(["guildId"], failMessage)], // fail message is the message you will see when the command is ran in the wrong server. + * description: "command description", + * execute: async (ctx, args) => { + * // your code here + * }, + * }); + * ``` + */ + +import { CommandType, EventPlugin, PluginType } from "@sern/handler"; + +export function serverOnly( + guildId: string[], + failMessage = "I am unable to comply with your command." +): EventPlugin { + return { + type: PluginType.Event, + description: "Checks if a command is available in a specific server.", + async execute([ctx, args], controller) { + if (!guildId.includes(ctx.guildId)) { + await ctx.reply(failMessage).then(async (m) => { + setTimeout(async () => { + await m.delete(); + }, 3000); + }); + return controller.stop(); + } + return controller.next(); + }, + }; +}