3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-14 21:31:50 +00:00

Reworked automod "set_slowmode" action (#441)

* initial

* fixes

Signed-off-by: GitHub <noreply@github.com>

---------

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: Almeida <github@almeidx.dev>
This commit is contained in:
Tiago R 2023-12-28 20:14:26 +00:00 committed by GitHub
parent 8860d4fb22
commit d8c1a5791b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -6,7 +6,7 @@ import { automodAction } from "../helpers";
export const SetSlowmodeAction = automodAction({
configType: t.type({
channels: t.array(t.string),
channels: tNullable(t.array(t.string)),
duration: tNullable(tDelayString),
}),
@ -14,14 +14,17 @@ export const SetSlowmodeAction = automodAction({
duration: "10s",
},
async apply({ pluginData, actionConfig }) {
async apply({ pluginData, actionConfig, contexts }) {
const slowmodeMs = Math.max(actionConfig.duration ? convertDelayStringToMS(actionConfig.duration)! : 0, 0);
for (const channelId of actionConfig.channels) {
const channels: Snowflake[] = actionConfig.channels ?? [];
if (channels.length === 0) {
channels.push(...contexts.filter((c) => c.message?.channel_id).map((c) => c.message!.channel_id));
}
for (const channelId of channels) {
const channel = pluginData.guild.channels.cache.get(channelId as Snowflake);
// Only text channels and text channels within categories support slowmodes
if (!channel || (!channel.isTextBased() && channel.type !== ChannelType.GuildCategory)) {
if (!channel?.isTextBased() && channel?.type !== ChannelType.GuildCategory) {
continue;
}