mirror of
https://github.com/sern-handler/awesome-plugins
synced 2026-06-06 01:16:51 +00:00
38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
//@ts-nocheck
|
|
/**
|
|
* @plugin
|
|
* fromCallback turns a callback into a plugin result.
|
|
* if the callback returns truthy value, plugin continues.
|
|
* This control plugin works for every command type. The arguments of the callback
|
|
* mirror the execute method on the current module.
|
|
* @author @jacoobes [<@182326315813306368>]
|
|
* @version 1.0.0
|
|
* @example
|
|
* ```ts
|
|
* const myServer = "941002690211766332";
|
|
* export default commandModule({
|
|
* type: CommandType.Both,
|
|
* plugins: [
|
|
* //This plugin prevents this command module from executing in other servers except myServer
|
|
* fromCallback((ctx, args) => ctx.guildId == myServer)
|
|
* ],
|
|
* execute: ctx => {
|
|
* ctx.reply("I only respond in myServer!");
|
|
* }
|
|
* })
|
|
* ```
|
|
* @end
|
|
*/
|
|
|
|
|
|
import { PluginType, makePlugin, controller } from "@sern/handler";
|
|
|
|
export const fromCallback = (cb: (...args: any[]) => boolean) =>
|
|
makePlugin(PluginType.Control, (...args) => {
|
|
//console.log(args)
|
|
if(cb.apply(null, args)) {
|
|
return controller.next();
|
|
}
|
|
return controller.stop();
|
|
});
|