Skip to content

Commit

Permalink
fix(AutoModerationActionExecution): transform action (#9111)
Browse files Browse the repository at this point in the history
* fix: transform action upon execution

* chore: move method into transformer

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
  • Loading branch information
Jiralite and kodiakhq[bot] committed Feb 17, 2023
1 parent 9439107 commit 9156a28
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 9 deletions.
@@ -1,5 +1,7 @@
'use strict';

const { _transformAPIAutoModerationAction } = require('../util/Transformers');

/**
* Represents the structure of an executed action when an {@link AutoModerationRule} is triggered.
*/
Expand All @@ -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.
Expand Down
9 changes: 2 additions & 7 deletions packages/discord.js/src/structures/AutoModerationRule.js
Expand Up @@ -2,6 +2,7 @@

const { Collection } = require('@discordjs/collection');
const Base = require('./Base');
const { _transformAPIAutoModerationAction } = require('../util/Transformers');

/**
* Represents an auto moderation rule.
Expand Down Expand Up @@ -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) {
Expand Down
5 changes: 5 additions & 0 deletions packages/discord.js/src/util/APITypes.js
Expand Up @@ -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}
Expand Down
18 changes: 17 additions & 1 deletion packages/discord.js/src/util/Transformers.js
Expand Up @@ -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 };

2 comments on commit 9156a28

@vercel
Copy link

@vercel vercel bot commented on 9156a28 Feb 17, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vercel
Copy link

@vercel vercel bot commented on 9156a28 Feb 17, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.