diff --git a/packages/discord.js/src/structures/MessagePayload.js b/packages/discord.js/src/structures/MessagePayload.js index bfa7372ee..eb5b63ad2 100644 --- a/packages/discord.js/src/structures/MessagePayload.js +++ b/packages/discord.js/src/structures/MessagePayload.js @@ -6,7 +6,6 @@ const { MessageFlags } = require('discord-api-types/v9'); const { RangeError } = require('../errors'); const DataResolver = require('../util/DataResolver'); const MessageFlagsBitField = require('../util/MessageFlagsBitField'); -const Transformers = require('../util/Transformers'); const Util = require('../util/Util'); /** @@ -133,7 +132,7 @@ class MessagePayload { } const components = this.options.components?.map(c => - isJSONEncodable(c) ? c.toJSON() : Transformers.toSnakeCase(c), + isJSONEncodable(c) ? c.toJSON() : this.target.client.options.jsonTransformer(c), ); let username; @@ -194,7 +193,7 @@ class MessagePayload { tts, nonce, embeds: this.options.embeds?.map(embed => - embed instanceof Embed ? embed.toJSON() : Transformers.toSnakeCase(embed), + embed instanceof Embed ? embed.toJSON() : this.target.client.options.jsonTransformer(embed), ), components, username, diff --git a/packages/discord.js/src/util/Options.js b/packages/discord.js/src/util/Options.js index 3e6ba37ae..01507797d 100644 --- a/packages/discord.js/src/util/Options.js +++ b/packages/discord.js/src/util/Options.js @@ -2,6 +2,7 @@ const process = require('node:process'); const { DefaultRestOptions } = require('@discordjs/rest'); +const Transformers = require('./Transformers'); /** * @typedef {Function} CacheFactory @@ -35,6 +36,7 @@ const { DefaultRestOptions } = require('@discordjs/rest'); * @property {SweeperOptions} [sweepers={}] Options for cache sweeping * @property {WebsocketOptions} [ws] Options for the WebSocket * @property {RESTOptions} [rest] Options for the REST manager + * @property {Function} [jsonTransformer] A function used to transform outgoing json data */ /** @@ -88,6 +90,7 @@ class Options extends null { version: 9, }, rest: DefaultRestOptions, + jsonTransformer: Transformers.toSnakeCase, }; } diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 433f4d921..65f894503 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -3635,6 +3635,7 @@ export interface ClientOptions { sweepers?: SweeperOptions; ws?: WebSocketOptions; rest?: Partial; + jsonTransformer?: (obj: unknown) => unknown; } export type ClientPresenceStatus = 'online' | 'idle' | 'dnd';