feat(*): enforce strings (#4880)

BREAKING CHANGE: Removes all Resolvables for only string inputs

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
This commit is contained in:
Souji
2021-06-01 17:31:49 +02:00
committed by GitHub
parent 66a6a1fced
commit 7b85a7259f
14 changed files with 97 additions and 153 deletions

92
typings/index.d.ts vendored
View File

@@ -129,13 +129,13 @@ declare module 'discord.js' {
public static create(
target: MessageTarget,
content: APIMessageContentResolvable,
content: string | null,
options?: undefined,
extra?: MessageOptions | WebhookMessageOptions,
): APIMessage;
public static create(
target: MessageTarget,
content: StringResolvable,
content: string | null,
options: MessageOptions | WebhookMessageOptions | MessageAdditions,
extra?: MessageOptions | WebhookMessageOptions,
): APIMessage;
@@ -144,13 +144,13 @@ declare module 'discord.js' {
): [MessageEmbed[], MessageAttachment[]];
public static resolveFile(fileLike: BufferResolvable | Stream | FileOptions | MessageAttachment): Promise<unknown>;
public static transformOptions(
content: APIMessageContentResolvable,
content: string | null,
options?: undefined,
extra?: MessageOptions | WebhookMessageOptions,
isWebhook?: boolean,
): MessageOptions | WebhookMessageOptions;
public static transformOptions(
content: StringResolvable,
content: string | null,
options: MessageOptions | WebhookMessageOptions | MessageAdditions,
extra?: MessageOptions | WebhookMessageOptions,
isWebhook?: boolean,
@@ -448,16 +448,16 @@ declare module 'discord.js' {
public defer(options?: InteractionDeferOptions): Promise<void>;
public deleteReply(): Promise<void>;
public editReply(
content: string | APIMessage | WebhookEditMessageOptions | MessageAdditions,
content: string | null | APIMessage | WebhookEditMessageOptions | MessageAdditions,
): Promise<Message | RawMessage>;
public editReply(content: string, options?: WebhookEditMessageOptions): Promise<Message | RawMessage>;
public editReply(content: string | null, options?: WebhookEditMessageOptions): Promise<Message | RawMessage>;
public fetchReply(): Promise<Message | RawMessage>;
public followUp(
content: string | APIMessage | InteractionReplyOptions | MessageAdditions,
): Promise<Message | RawMessage>;
public followUp(content: string, options?: InteractionReplyOptions): Promise<Message | RawMessage>;
public reply(content: string | APIMessage | InteractionReplyOptions | MessageAdditions): Promise<void>;
public reply(content: string, options?: InteractionReplyOptions): Promise<void>;
public followUp(content: string | null, options?: InteractionReplyOptions): Promise<Message | RawMessage>;
public reply(content: string | null | APIMessage | InteractionReplyOptions | MessageAdditions): Promise<void>;
public reply(content: string | null, options?: InteractionReplyOptions): Promise<void>;
private transformOption(option: unknown, resolved: unknown): CommandInteractionOption;
}
@@ -1185,9 +1185,9 @@ declare module 'discord.js' {
): ReactionCollector;
public delete(): Promise<Message>;
public edit(
content: APIMessageContentResolvable | MessageEditOptions | MessageEmbed | APIMessage,
content: string | null | MessageEditOptions | MessageEmbed | APIMessage,
): Promise<Message>;
public edit(content: StringResolvable, options: MessageEditOptions | MessageEmbed): Promise<Message>;
public edit(content: string | null, options: MessageEditOptions | MessageEmbed): Promise<Message>;
public equals(message: Message, rawData: unknown): boolean;
public fetchReference(): Promise<Message>;
public fetchWebhook(): Promise<Webhook>;
@@ -1197,19 +1197,19 @@ declare module 'discord.js' {
public react(emoji: EmojiIdentifierResolvable): Promise<MessageReaction>;
public removeAttachments(): Promise<Message>;
public reply(
content: APIMessageContentResolvable | (ReplyMessageOptions & { split?: false }) | MessageAdditions,
content: string | null | (ReplyMessageOptions & { split?: false }) | MessageAdditions,
): Promise<Message>;
public reply(options: ReplyMessageOptions & { split: true | SplitOptions }): Promise<Message[]>;
public reply(options: ReplyMessageOptions | APIMessage): Promise<Message | Message[]>;
public reply(
content: StringResolvable,
content: string | null,
options: (ReplyMessageOptions & { split?: false }) | MessageAdditions,
): Promise<Message>;
public reply(
content: StringResolvable,
content: string | null,
options: ReplyMessageOptions & { split: true | SplitOptions },
): Promise<Message[]>;
public reply(content: StringResolvable, options: ReplyMessageOptions): Promise<Message | Message[]>;
public reply(content: string | null, options: ReplyMessageOptions): Promise<Message | Message[]>;
public suppressEmbeds(suppress?: boolean): Promise<Message>;
public toJSON(): unknown;
public toString(): string;
@@ -1271,26 +1271,22 @@ declare module 'discord.js' {
public type: string;
public url: string | null;
public readonly video: MessageEmbedVideo | null;
public addField(name: StringResolvable, value: StringResolvable, inline?: boolean): this;
public addField(name: string, value: string, inline?: boolean): this;
public addFields(...fields: EmbedFieldData[] | EmbedFieldData[][]): this;
public attachFiles(file: (MessageAttachment | FileOptions | string)[]): this;
public setAuthor(name: StringResolvable, iconURL?: string, url?: string): this;
public setAuthor(name: string, iconURL?: string, url?: string): this;
public setColor(color: ColorResolvable): this;
public setDescription(description: StringResolvable): this;
public setFooter(text: StringResolvable, iconURL?: string): this;
public setDescription(description: string): this;
public setFooter(text: string, iconURL?: string): this;
public setImage(url: string): this;
public setThumbnail(url: string): this;
public setTimestamp(timestamp?: Date | number): this;
public setTitle(title: StringResolvable): this;
public setTitle(title: string): this;
public setURL(url: string): this;
public spliceFields(index: number, deleteCount: number, ...fields: EmbedFieldData[] | EmbedFieldData[][]): this;
public toJSON(): unknown;
public static normalizeField(
name: StringResolvable,
value: StringResolvable,
inline?: boolean,
): Required<EmbedFieldData>;
public static normalizeField(name: string, value: string, inline?: boolean): Required<EmbedFieldData>;
public static normalizeFields(...fields: EmbedFieldData[] | EmbedFieldData[][]): Required<EmbedFieldData>[];
}
@@ -1785,7 +1781,7 @@ declare module 'discord.js' {
public static moveElementInArray(array: any[], element: any, newIndex: number, offset?: boolean): number;
public static parseEmoji(text: string): { animated: boolean; name: string; id: string | null } | null;
public static resolveColor(color: ColorResolvable): number;
public static resolveString(data: StringResolvable): string;
public static verifyString(data: string, error?: typeof Error, errorMessage?: string, allowEmpty?: boolean): string;
public static setPosition<T extends Channel | Role>(
item: T,
position: number,
@@ -1794,7 +1790,7 @@ declare module 'discord.js' {
route: unknown,
reason?: string,
): Promise<{ id: Snowflake; position: number }[]>;
public static splitMessage(text: StringResolvable, options?: SplitOptions): string[];
public static splitMessage(text: string, options?: SplitOptions): string[];
}
class VoiceBroadcast extends EventEmitter {
@@ -1970,25 +1966,25 @@ declare module 'discord.js' {
public token: string;
public editMessage(
message: MessageResolvable,
content: APIMessageContentResolvable | APIMessage | MessageEmbed | MessageEmbed[],
content: string | null | APIMessage | MessageEmbed | MessageEmbed[],
options?: WebhookEditMessageOptions,
): Promise<RawMessage>;
public editMessage(message: MessageResolvable, options: WebhookEditMessageOptions): Promise<RawMessage>;
public fetchMessage(message: Snowflake, cache?: boolean): Promise<RawMessage>;
public send(
content: APIMessageContentResolvable | (WebhookMessageOptions & { split?: false }) | MessageAdditions,
content: string | (WebhookMessageOptions & { split?: false }) | MessageAdditions,
): Promise<RawMessage>;
public send(options: WebhookMessageOptions & { split: true | SplitOptions }): Promise<RawMessage[]>;
public send(options: WebhookMessageOptions | APIMessage): Promise<RawMessage | RawMessage[]>;
public send(
content: StringResolvable,
content: string | null,
options: (WebhookMessageOptions & { split?: false }) | MessageAdditions,
): Promise<RawMessage>;
public send(
content: StringResolvable,
content: string | null,
options: WebhookMessageOptions & { split: true | SplitOptions },
): Promise<RawMessage[]>;
public send(content: StringResolvable, options: WebhookMessageOptions): Promise<RawMessage | RawMessage[]>;
public send(content: string | null, options: WebhookMessageOptions): Promise<RawMessage | RawMessage[]>;
}
export class WebSocketManager extends EventEmitter {
@@ -2325,14 +2321,12 @@ declare module 'discord.js' {
interface PartialTextBasedChannelFields {
lastMessageID: Snowflake | null;
readonly lastMessage: Message | null;
send(
content: APIMessageContentResolvable | (MessageOptions & { split?: false }) | MessageAdditions,
): Promise<Message>;
send(content: string | (MessageOptions & { split?: false }) | MessageAdditions): Promise<Message>;
send(options: MessageOptions & { split: true | SplitOptions }): Promise<Message[]>;
send(options: MessageOptions | APIMessage): Promise<Message | Message[]>;
send(content: StringResolvable, options: (MessageOptions & { split?: false }) | MessageAdditions): Promise<Message>;
send(content: StringResolvable, options: MessageOptions & { split: true | SplitOptions }): Promise<Message[]>;
send(content: StringResolvable, options: MessageOptions): Promise<Message | Message[]>;
send(content: string | null, options: (MessageOptions & { split?: false }) | MessageAdditions): Promise<Message>;
send(content: string | null, options: MessageOptions & { split: true | SplitOptions }): Promise<Message[]>;
send(content: string | null, options: MessageOptions): Promise<Message | Message[]>;
}
interface TextBasedChannelFields extends PartialTextBasedChannelFields {
@@ -2368,7 +2362,7 @@ declare module 'discord.js' {
edit(options: WebhookEditData): Promise<Webhook>;
editMessage(
message: MessageResolvable | '@original',
content: APIMessageContentResolvable | APIMessage | MessageAdditions,
content: string | null | APIMessage | MessageAdditions,
options?: WebhookEditMessageOptions,
): Promise<Message | RawMessage>;
editMessage(
@@ -2377,20 +2371,20 @@ declare module 'discord.js' {
): Promise<Message | RawMessage>;
fetchMessage(message: Snowflake | '@original', cache?: boolean): Promise<Message | RawMessage>;
send(
content: APIMessageContentResolvable | (WebhookMessageOptions & { split?: false }) | MessageAdditions,
content: string | (WebhookMessageOptions & { split?: false }) | MessageAdditions,
): Promise<Message | RawMessage>;
send(options: WebhookMessageOptions & { split: true | SplitOptions }): Promise<(Message | RawMessage)[]>;
send(options: WebhookMessageOptions | APIMessage): Promise<Message | RawMessage | (Message | RawMessage)[]>;
send(
content: StringResolvable,
content: string | null,
options: (WebhookMessageOptions & { split?: false }) | MessageAdditions,
): Promise<Message | RawMessage>;
send(
content: StringResolvable,
content: string | null,
options: WebhookMessageOptions & { split: true | SplitOptions },
): Promise<(Message | RawMessage)[]>;
send(
content: StringResolvable,
content: string | null,
options: WebhookMessageOptions,
): Promise<Message | RawMessage | (Message | RawMessage)[]>;
sendSlackMessage(body: unknown): Promise<boolean>;
@@ -2491,8 +2485,6 @@ declare module 'discord.js' {
RESOURCE_OVERLOADED: 130000;
}
type APIMessageContentResolvable = string | number | boolean | bigint | symbol | readonly StringResolvable[];
interface ApplicationAsset {
name: string;
id: Snowflake;
@@ -2801,8 +2793,8 @@ declare module 'discord.js' {
}
interface EmbedFieldData {
name: StringResolvable;
value: StringResolvable;
name: string;
value: string;
inline?: boolean;
}
@@ -3207,7 +3199,7 @@ declare module 'discord.js' {
interface MessageEditOptions {
attachments?: MessageAttachment[];
content?: StringResolvable;
content?: string;
embed?: MessageEmbed | MessageEmbedOptions | null;
code?: string | boolean;
files?: (FileOptions | BufferResolvable | Stream | MessageAttachment)[];
@@ -3303,7 +3295,7 @@ declare module 'discord.js' {
interface MessageOptions {
tts?: boolean;
nonce?: string | number;
content?: StringResolvable;
content?: string;
embed?: MessageEmbed | MessageEmbedOptions;
allowedMentions?: MessageMentionOptions;
files?: (FileOptions | BufferResolvable | Stream | MessageAttachment)[];
@@ -3652,8 +3644,6 @@ declare module 'discord.js' {
type StreamType = 'unknown' | 'converted' | 'opus' | 'ogg/opus' | 'webm/opus';
type StringResolvable = string | string[] | any;
type SystemChannelFlagsString =
| 'SUPPRESS_JOIN_NOTIFICATIONS'
| 'SUPPRESS_PREMIUM_SUBSCRIPTIONS'

View File

@@ -35,7 +35,6 @@ client.on('message', ({ channel }) => {
assertIsMessage(channel.send('string'));
assertIsMessage(channel.send({}));
assertIsMessage(channel.send({ embed: {} }));
assertIsMessage(channel.send({ another: 'property' }, {}));
const attachment = new MessageAttachment('file.png');
const embed = new MessageEmbed();
@@ -43,7 +42,6 @@ client.on('message', ({ channel }) => {
assertIsMessage(channel.send(embed));
assertIsMessage(channel.send([attachment, embed]));
assertIsMessageArray(channel.send(Symbol('another primitive'), { split: true }));
assertIsMessageArray(channel.send({ split: true }));
// @ts-expect-error