Repository: discordjs/discord.js
File: packages/builders/src/messages/Message.ts (TypeScript)

Code before:
import { fileBodyMessagePredicate, messagePredicate } from './Assertions.js';
import { AttachmentBuilder } from './Attachment.js';
import { MessageReferenceBuilder } from './MessageReference.js';
import { EmbedBuilder } from './embed/Embed.js';
import { PollBuilder } from './poll/Poll.js';

export interface MessageBuilderData
	extends Partial<
		Omit<
			RESTPostAPIChannelMessageJSONBody,
			'allowed_mentions' | 'attachments' | 'components' | 'embeds' | 'message_reference' | 'poll'
		>
	> {
	allowed_mentions?: AllowedMentionsBuilder;
	attachments: AttachmentBuilder[];
	components: MessageTopLevelComponentBuilder[];
	embeds: EmbedBuilder[];
	message_reference?: MessageReferenceBuilder;
	poll?: PollBuilder;
}

/**
 * A builder that creates API-compatible JSON data for messages.
 */
export class MessageBuilder
	implements JSONEncodable<RESTPostAPIChannelMessageJSONBody>, FileBodyEncodeable<RESTPostAPIChannelMessageJSONBody>
{
	/**
	 * The API data associated with this message.
	 */
	private readonly data: MessageBuilderData;

	/**
	 * Gets the attachments of this message.
	 */
	public get attachments(): readonly AttachmentBuilder[] {
		return this.data.attachments;
	}

	/**
	 * Gets the components of this message.
	 */
	public get components(): readonly MessageTopLevelComponentBuilder[] {
		return this.data.components;
	}

	/**
	 * Gets the embeds of this message.
	 */
	public get embeds(): readonly EmbedBuilder[] {
		return this.data.embeds;

Review comment (suggestion):
```suggestion
	implements FileBodyEncodeable<RESTPostAPIChannelMessageJSONBody>
```

This is redundant considering `FileBodyEncodeable` extends `JSONEncodable`

Code after:
import { fileBodyMessagePredicate, messagePredicate } from './Assertions.js';
import { AttachmentBuilder } from './Attachment.js';
import { MessageReferenceBuilder } from './MessageReference.js';
import { EmbedBuilder } from './embed/Embed.js';
import { PollBuilder } from './poll/Poll.js';

export interface MessageBuilderData
	extends Partial<
		Omit<
			RESTPostAPIChannelMessageJSONBody,
			'allowed_mentions' | 'attachments' | 'components' | 'embeds' | 'message_reference' | 'poll'
		>
	> {
	allowed_mentions?: AllowedMentionsBuilder;
	attachments: AttachmentBuilder[];
	components: MessageTopLevelComponentBuilder[];
	embeds: EmbedBuilder[];
	message_reference?: MessageReferenceBuilder;
	poll?: PollBuilder;
}

/**
 * A builder that creates API-compatible JSON data for messages.
 */
export class MessageBuilder
	implements JSONEncodable<RESTPostAPIChannelMessageJSONBody>, FileBodyEncodable<RESTPostAPIChannelMessageJSONBody>
{
	/**
	 * The API data associated with this message.
	 */
	private readonly data: MessageBuilderData;

	/**
	 * Gets the attachments of this message.
	 */
	public get attachments(): readonly AttachmentBuilder[] {
		return this.data.attachments;
	}

	/**
	 * Gets the components of this message.
	 */
	public get components(): readonly MessageTopLevelComponentBuilder[] {
		return this.data.components;
	}

	/**
	 * Gets the embeds of this message.
	 */
	public get embeds(): readonly EmbedBuilder[] {
		return this.data.embeds;