feat: channelType Plugin (#29)

* feat: channelType Plugin

* fix: Forgot to format with prettier

* fix: fixed requested changes

regarding optional onFail: I wasn't sure if it would throw an error due to the plugin attempting to send a empty message so I put it in a check.

* fix: fix

* chore: fix jsdoc

* feat: Ability to have multiple channel types

* fix: fix

* feat: Role Only

* Delete roleOnly.ts

* fix: fixed changes

* fix: uses typeof to specify the type

* fix: fix

Co-authored-by: Evo <85353424+EvolutionX-10@users.noreply.github.com>
This commit is contained in:
Neo
2022-08-20 03:16:44 +10:00
committed by GitHub
parent 25123b5d3a
commit 27d3d37048

44
TypeScript/channelType.ts Normal file
View File

@@ -0,0 +1,44 @@
/**
* This plugin checks if a channel is the specified type
*
* @author @NeoYaBoi [<@762918086349029386>]
* @version 1.0.0
* @example
* ```ts
* import { channelType } from "../plugins/channelType";
* import { ChannelType } from "discord.js"
* import { commandModule } from "@sern/handler";
* export default commandModule({
* plugins: [ channelType([ChannelType.GuildText], 'This cannot be used here') ],
* execute: (ctx) => {
* //your code here
* }
* })
* ```
*/
import { ChannelType } from "discord.js";
import { CommandType, EventPlugin, PluginType } from "@sern/handler";
export function channelType(
channelType: ChannelType[],
onFail?: string
): EventPlugin<CommandType.Both> {
return {
type: PluginType.Event,
description: "Checks the channel type.",
async execute(event, controller) {
const [ctx] = event;
let channel = ctx.channel?.type;
//for some reason the dm channel type was returning undefined at some points
if (channel === undefined) {
channel = ChannelType.DM;
}
if (channelType.includes(channel)) {
return controller.next();
}
if (onFail) {
await ctx.reply(onFail);
}
return controller.stop();
},
};
}