mirror of
https://github.com/discordeno/discordeno.git
synced 2026-06-02 17:00:08 +00:00
* Simplify SfetchMembers (#2339) Co-authored-by: meister03 * Create leaveVoiceChannel.ts (#2342) * Update editFollowupMessage.ts (#2344) * Update editInteractionResponse.ts (#2343) * Update editMessage.ts (#2341) * Update calculateShardId.ts Fix wrong shardId calculations * Add Role Icon to Edit (#2346) Co-authored-by: meister03 * Add mix max length (#2347) Co-authored-by: meister03 * style: deno fmt * Fix Disabled Options (#2368) Co-authored-by: meister03 <meisterpi@gmail.com> * Add app_permissions (#2369) Co-authored-by: meister03 <meisterpi@gmail.com> * thread_id instead of threadId (#2378) Co-authored-by: Veeti K <veeti@veetik.com> * feat: Create `ApplicationCommandFlags` enumerator. (#2384) Co-authored-by: vxern <vxern@wordcollector.co.uk> * Small Changes in a bulk pr to close the issues (#2370) * Initial Commit * Close #2364 * Add preset whitelist to automod #2356 -> Resolve Issue * Close [api-docs] AutoMod message intent updates (#5083) #2330 * Breaking Channge | [api-docs] Update message type names (#5093) * message.interaction.name changed attitude | [api-docs] Update Change_Log.md #2333 * #2333 also closes #2316 * Clarify 45 chars length | Add those on permission plugins | [api-docs] text input label has max 45 characters (#4689) #2137 * Clarify webhook naming restrictions (#4625) #2094 * 8th August Webhook new View Channel perm | Closes #2363 * 8th August Webhook new View Channel perm | Closes #2363 * Document thread_name for execute webhook (#5007) #2263 * Close Update create and modify channel documentation (#4867) #2237 * unnecesary nullable tag in Modify Guild Member params (#5164) #2355 * deno fmt * deno fmt * Use .includefor disallowed webhook names" * Add Missing Enums & #2367, #2362, #2361, #2371, #2372. #2349, #2358, #2325 back * deno fmt :( Co-authored-by: meister03 <meisterpi@gmail.com> Co-authored-by: LTS20050703 <87189679+lts20050703@users.noreply.github.com> Co-authored-by: Tomato6966 <chris.pre03@gmail.com> Co-authored-by: ITOH <to@itoh.at> Co-authored-by: meister03 <meisterpi@gmail.com> Co-authored-by: Veeti K <veeti@veetik.com> Co-authored-by: vxern <vxern@wordcollector.co.uk> Co-authored-by: LTS20050703 <87189679+lts20050703@users.noreply.github.com>
78 lines
2.9 KiB
TypeScript
78 lines
2.9 KiB
TypeScript
import { Bot } from "../../../bot.ts";
|
|
import {
|
|
AutoModerationActionType,
|
|
AutoModerationEventTypes,
|
|
AutoModerationTriggerTypes,
|
|
DiscordAutoModerationRule,
|
|
DiscordAutoModerationRuleTriggerMetadataPresets,
|
|
} from "../../../types/discord.ts";
|
|
|
|
/** Get a rule currently configured for guild. */
|
|
export async function createAutomodRule(bot: Bot, guildId: bigint, options: CreateAutoModerationRuleOptions) {
|
|
const rule = await bot.rest.runMethod<DiscordAutoModerationRule>(
|
|
bot.rest,
|
|
"POST",
|
|
bot.constants.routes.AUTOMOD_RULES(guildId),
|
|
{
|
|
name: options.name,
|
|
event_type: options.eventType,
|
|
trigger_type: options.triggerType,
|
|
trigger_metadata: {
|
|
keyword_filter: options.triggerMetadata.keywordFilter,
|
|
presets: options.triggerMetadata.presets,
|
|
allow_list: options.triggerMetadata.allowList,
|
|
},
|
|
actions: options.actions.map((action) => ({
|
|
type: action.type,
|
|
metadata: action.metadata
|
|
? {
|
|
channel_id: action.metadata.channelId?.toString(),
|
|
duration_seconds: action.metadata.durationSeconds,
|
|
}
|
|
: undefined,
|
|
})),
|
|
enabled: options.enabled ?? true,
|
|
exempt_roles: options.exemptRoles?.map((id) => id.toString()),
|
|
exempt_channels: options.exemptChannels?.map((id) => id.toString()),
|
|
},
|
|
);
|
|
|
|
return bot.transformers.automodRule(bot, rule);
|
|
}
|
|
|
|
export interface CreateAutoModerationRuleOptions {
|
|
/** The name of the rule. */
|
|
name: string;
|
|
/** The type of event to trigger the rule on. */
|
|
eventType: AutoModerationEventTypes;
|
|
/** The type of trigger to use for the rule. */
|
|
triggerType: AutoModerationTriggerTypes;
|
|
/** The metadata to use for the trigger. */
|
|
triggerMetadata: {
|
|
/** The keywords needed to match. Only present when TriggerType.Keyword */
|
|
keywordFilter?: string[];
|
|
/** The pre-defined lists of words to match from. Only present when TriggerType.KeywordPreset */
|
|
presets?: DiscordAutoModerationRuleTriggerMetadataPresets[];
|
|
/** The substrings which will exempt from triggering the preset trigger type. Only present when TriggerType.KeywordPreset */
|
|
allowList?: string[];
|
|
};
|
|
/** The actions that will trigger for this rule */
|
|
actions: {
|
|
/** The type of action to take when a rule is triggered */
|
|
type: AutoModerationActionType;
|
|
/** additional metadata needed during execution for this specific action type */
|
|
metadata?: {
|
|
/** The id of channel to which user content should be logged. Only in SendAlertMessage */
|
|
channelId?: bigint;
|
|
/** Timeout duration in seconds. Max is 2419200(4 weeks). Only supported for TriggerType.Keyword */
|
|
durationSeconds?: number;
|
|
};
|
|
}[];
|
|
/** Whether the rule should be enabled, true by default. */
|
|
enabled?: boolean;
|
|
/** The role ids that should not be effected by the rule */
|
|
exemptRoles?: bigint[];
|
|
/** The channel ids that should not be effected by the rule. */
|
|
exemptChannels?: bigint[];
|
|
}
|