From 9156a2889cd0946dfd0b30a5f8365abfbc377b3d Mon Sep 17 00:00:00 2001 From: Jiralite <33201955+Jiralite@users.noreply.github.com> Date: Fri, 17 Feb 2023 20:14:51 +0000 Subject: [PATCH] fix(AutoModerationActionExecution): transform `action` (#9111) * fix: transform action upon execution * chore: move method into transformer --------- Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- .../AutoModerationActionExecution.js | 4 +++- .../src/structures/AutoModerationRule.js | 9 ++------- packages/discord.js/src/util/APITypes.js | 5 +++++ packages/discord.js/src/util/Transformers.js | 18 +++++++++++++++++- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/packages/discord.js/src/structures/AutoModerationActionExecution.js b/packages/discord.js/src/structures/AutoModerationActionExecution.js index d48480330..ca40856d0 100644 --- a/packages/discord.js/src/structures/AutoModerationActionExecution.js +++ b/packages/discord.js/src/structures/AutoModerationActionExecution.js @@ -1,5 +1,7 @@ 'use strict'; +const { _transformAPIAutoModerationAction } = require('../util/Transformers'); + /** * Represents the structure of an executed action when an {@link AutoModerationRule} is triggered. */ @@ -15,7 +17,7 @@ class AutoModerationActionExecution { * The action that was executed. * @type {AutoModerationAction} */ - this.action = data.action; + this.action = _transformAPIAutoModerationAction(data.action); /** * The id of the auto moderation rule this action belongs to. diff --git a/packages/discord.js/src/structures/AutoModerationRule.js b/packages/discord.js/src/structures/AutoModerationRule.js index 4f981b18b..3767331b4 100644 --- a/packages/discord.js/src/structures/AutoModerationRule.js +++ b/packages/discord.js/src/structures/AutoModerationRule.js @@ -2,6 +2,7 @@ const { Collection } = require('@discordjs/collection'); const Base = require('./Base'); +const { _transformAPIAutoModerationAction } = require('../util/Transformers'); /** * Represents an auto moderation rule. @@ -101,13 +102,7 @@ class AutoModerationRule extends Base { * The actions of this auto moderation rule. * @type {AutoModerationAction[]} */ - this.actions = data.actions.map(action => ({ - type: action.type, - metadata: { - durationSeconds: action.metadata.duration_seconds ?? null, - channelId: action.metadata.channel_id ?? null, - }, - })); + this.actions = data.actions.map(action => _transformAPIAutoModerationAction(action)); } if ('enabled' in data) { diff --git a/packages/discord.js/src/util/APITypes.js b/packages/discord.js/src/util/APITypes.js index 18af763d2..7189eeff0 100644 --- a/packages/discord.js/src/util/APITypes.js +++ b/packages/discord.js/src/util/APITypes.js @@ -28,6 +28,11 @@ * @see {@link https://discord-api-types.dev/api/discord-api-types-v10#APIApplicationCommandOption} */ +/** + * @external APIAutoModerationAction + * @see {@link https://discord-api-types.dev/api/discord-api-types-v10/interface/APIAutoModerationAction} + */ + /** * @external APIButtonComponent * @see {@link https://discord-api-types.dev/api/discord-api-types-v10#APIButtonComponent} diff --git a/packages/discord.js/src/util/Transformers.js b/packages/discord.js/src/util/Transformers.js index 6b096dfc9..8799dda00 100644 --- a/packages/discord.js/src/util/Transformers.js +++ b/packages/discord.js/src/util/Transformers.js @@ -16,4 +16,20 @@ function toSnakeCase(obj) { return Object.fromEntries(Object.entries(obj).map(([key, value]) => [snakeCase(key), toSnakeCase(value)])); } -module.exports = { toSnakeCase }; +/** + * Transforms an API auto moderation action object to a camel-cased variant. + * @param {APIAutoModerationAction} autoModerationAction The action to transform + * @returns {AutoModerationAction} + * @ignore + */ +function _transformAPIAutoModerationAction(autoModerationAction) { + return { + type: autoModerationAction.type, + metadata: { + durationSeconds: autoModerationAction.metadata.duration_seconds ?? null, + channelId: autoModerationAction.metadata.channel_id ?? null, + }, + }; +} + +module.exports = { toSnakeCase, _transformAPIAutoModerationAction };