mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
types: don't allow any object in the first parameter if second parameter is not given in TextBasedChannel#send (#4736)
This commit is contained in:
89
typings/index.d.ts
vendored
89
typings/index.d.ts
vendored
@@ -60,14 +60,26 @@ declare module 'discord.js' {
|
||||
|
||||
public static create(
|
||||
target: MessageTarget,
|
||||
content?: StringResolvable,
|
||||
options?: MessageOptions | WebhookMessageOptions | MessageAdditions,
|
||||
content: APIMessageContentResolvable,
|
||||
options?: undefined,
|
||||
extra?: MessageOptions | WebhookMessageOptions,
|
||||
): APIMessage;
|
||||
public static create(
|
||||
target: MessageTarget,
|
||||
content: StringResolvable,
|
||||
options: MessageOptions | WebhookMessageOptions | MessageAdditions,
|
||||
extra?: MessageOptions | WebhookMessageOptions,
|
||||
): APIMessage;
|
||||
public static partitionMessageAdditions(
|
||||
items: readonly (MessageEmbed | MessageAttachment)[],
|
||||
): [MessageEmbed[], MessageAttachment[]];
|
||||
public static resolveFile(fileLike: BufferResolvable | Stream | FileOptions | MessageAttachment): Promise<object>;
|
||||
public static transformOptions(
|
||||
content: APIMessageContentResolvable,
|
||||
options?: undefined,
|
||||
extra?: MessageOptions | WebhookMessageOptions,
|
||||
isWebhook?: boolean,
|
||||
): MessageOptions | WebhookMessageOptions;
|
||||
public static transformOptions(
|
||||
content: StringResolvable,
|
||||
options: MessageOptions | WebhookMessageOptions | MessageAdditions,
|
||||
@@ -995,33 +1007,29 @@ declare module 'discord.js' {
|
||||
): Promise<Collection<Snowflake, MessageReaction>>;
|
||||
public createReactionCollector(filter: CollectorFilter, options?: ReactionCollectorOptions): ReactionCollector;
|
||||
public delete(options?: { timeout?: number; reason?: string }): Promise<Message>;
|
||||
public edit(content: StringResolvable, options?: MessageEditOptions | MessageEmbed): Promise<Message>;
|
||||
public edit(options: MessageEditOptions | MessageEmbed | APIMessage): Promise<Message>;
|
||||
public edit(
|
||||
content: APIMessageContentResolvable | MessageEditOptions | MessageEmbed | APIMessage,
|
||||
): Promise<Message>;
|
||||
public edit(content: StringResolvable, options: MessageEditOptions | MessageEmbed): Promise<Message>;
|
||||
public equals(message: Message, rawData: object): boolean;
|
||||
public fetchWebhook(): Promise<Webhook>;
|
||||
public fetch(force?: boolean): Promise<Message>;
|
||||
public pin(options?: { reason?: string }): Promise<Message>;
|
||||
public react(emoji: EmojiIdentifierResolvable): Promise<MessageReaction>;
|
||||
public reply(
|
||||
content?: StringResolvable,
|
||||
options?: MessageOptions | MessageAdditions | (MessageOptions & { split?: false }) | MessageAdditions,
|
||||
content: APIMessageContentResolvable | (MessageOptions & { split?: false }) | MessageAdditions,
|
||||
): Promise<Message>;
|
||||
public reply(options: MessageOptions & { split: true | SplitOptions }): Promise<Message[]>;
|
||||
public reply(options: MessageOptions | APIMessage): Promise<Message | Message[]>;
|
||||
public reply(
|
||||
content: StringResolvable,
|
||||
options: (MessageOptions & { split?: false }) | MessageAdditions,
|
||||
): Promise<Message>;
|
||||
public reply(
|
||||
content?: StringResolvable,
|
||||
options?: (MessageOptions & { split: true | SplitOptions }) | MessageAdditions,
|
||||
): Promise<Message[]>;
|
||||
public reply(
|
||||
options?:
|
||||
| MessageOptions
|
||||
| MessageAdditions
|
||||
| APIMessage
|
||||
| (MessageOptions & { split?: false })
|
||||
| MessageAdditions
|
||||
| APIMessage,
|
||||
): Promise<Message>;
|
||||
public reply(
|
||||
options?: (MessageOptions & { split: true | SplitOptions }) | MessageAdditions | APIMessage,
|
||||
content: StringResolvable,
|
||||
options: MessageOptions & { split: true | SplitOptions },
|
||||
): Promise<Message[]>;
|
||||
public reply(content: StringResolvable, options: MessageOptions): Promise<Message | Message[]>;
|
||||
public suppressEmbeds(suppress?: boolean): Promise<Message>;
|
||||
public toJSON(): object;
|
||||
public toString(): string;
|
||||
@@ -2042,16 +2050,13 @@ declare module 'discord.js' {
|
||||
lastMessageID: Snowflake | null;
|
||||
readonly lastMessage: Message | null;
|
||||
send(
|
||||
options: MessageOptions | (MessageOptions & { split?: false }) | MessageAdditions | APIMessage,
|
||||
content: APIMessageContentResolvable | (MessageOptions & { split?: false }) | MessageAdditions,
|
||||
): Promise<Message>;
|
||||
send(
|
||||
options: (MessageOptions & { split: true | SplitOptions; content: StringResolvable }) | APIMessage,
|
||||
): Promise<Message[]>;
|
||||
send(
|
||||
content: StringResolvable,
|
||||
options?: MessageOptions | (MessageOptions & { split?: false }) | MessageAdditions,
|
||||
): Promise<Message>;
|
||||
send(content: StringResolvable, options?: MessageOptions & { split: true | SplitOptions }): 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[]>;
|
||||
}
|
||||
|
||||
interface TextBasedChannelFields extends PartialTextBasedChannelFields {
|
||||
@@ -2082,17 +2087,19 @@ declare module 'discord.js' {
|
||||
delete(reason?: string): Promise<void>;
|
||||
edit(options: WebhookEditData): Promise<Webhook>;
|
||||
send(
|
||||
content?: StringResolvable,
|
||||
options?: (WebhookMessageOptions & { split?: false }) | MessageAdditions,
|
||||
content: APIMessageContentResolvable | (WebhookMessageOptions & { split?: false }) | MessageAdditions,
|
||||
): Promise<Message>;
|
||||
send(options: WebhookMessageOptions & { split: true | SplitOptions }): Promise<Message[]>;
|
||||
send(options: WebhookMessageOptions | APIMessage): Promise<Message | Message[]>;
|
||||
send(
|
||||
content: StringResolvable,
|
||||
options: (WebhookMessageOptions & { split?: false }) | MessageAdditions,
|
||||
): Promise<Message>;
|
||||
send(
|
||||
content?: StringResolvable,
|
||||
options?: (WebhookMessageOptions & { split: true | SplitOptions }) | MessageAdditions,
|
||||
): Promise<Message[]>;
|
||||
send(options?: (WebhookMessageOptions & { split?: false }) | MessageAdditions | APIMessage): Promise<Message>;
|
||||
send(
|
||||
options?: (WebhookMessageOptions & { split: true | SplitOptions }) | MessageAdditions | APIMessage,
|
||||
content: StringResolvable,
|
||||
options: WebhookMessageOptions & { split: true | SplitOptions },
|
||||
): Promise<Message[]>;
|
||||
send(content: StringResolvable, options: WebhookMessageOptions): Promise<Message | Message[]>;
|
||||
sendSlackMessage(body: object): Promise<boolean>;
|
||||
}
|
||||
|
||||
@@ -2166,6 +2173,8 @@ declare module 'discord.js' {
|
||||
REACTION_BLOCKED: number;
|
||||
}
|
||||
|
||||
type APIMessageContentResolvable = string | number | boolean | bigint | symbol | readonly StringResolvable[];
|
||||
|
||||
interface AuditLogChange {
|
||||
key: string;
|
||||
old?: any;
|
||||
@@ -2706,7 +2715,7 @@ declare module 'discord.js' {
|
||||
}
|
||||
|
||||
interface MessageEditOptions {
|
||||
content?: string;
|
||||
content?: StringResolvable;
|
||||
embed?: MessageEmbed | MessageEmbedOptions | null;
|
||||
code?: string | boolean;
|
||||
flags?: BitFieldResolvable<MessageFlagsString>;
|
||||
@@ -2786,7 +2795,7 @@ declare module 'discord.js' {
|
||||
interface MessageOptions {
|
||||
tts?: boolean;
|
||||
nonce?: string;
|
||||
content?: string;
|
||||
content?: StringResolvable;
|
||||
embed?: MessageEmbed | MessageEmbedOptions;
|
||||
disableMentions?: 'none' | 'all' | 'everyone';
|
||||
allowedMentions?: MessageMentionOptions;
|
||||
@@ -2806,7 +2815,7 @@ declare module 'discord.js' {
|
||||
|
||||
type MessageResolvable = Message | Snowflake;
|
||||
|
||||
type MessageTarget = TextChannel | DMChannel | User | GuildMember | Webhook | WebhookClient;
|
||||
type MessageTarget = TextChannel | NewsChannel | DMChannel | User | GuildMember | Webhook | WebhookClient;
|
||||
|
||||
type MessageType =
|
||||
| 'DEFAULT'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/// <reference path="index.d.ts" />
|
||||
|
||||
import { Client } from 'discord.js';
|
||||
import { Client, Message, MessageAttachment, MessageEmbed } from 'discord.js';
|
||||
|
||||
const client: Client = new Client();
|
||||
|
||||
@@ -25,4 +25,29 @@ client.on('messageReactionRemoveAll', async message => {
|
||||
console.log(`messageReactionRemoveAll - content: ${message.content}`);
|
||||
});
|
||||
|
||||
// These are to check that stuff is the right type
|
||||
declare const assertIsMessage: (m: Promise<Message>) => void;
|
||||
declare const assertIsMessageArray: (m: Promise<Message[]>) => void;
|
||||
|
||||
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();
|
||||
assertIsMessage(channel.send(attachment));
|
||||
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
|
||||
channel.send();
|
||||
// @ts-expect-error
|
||||
channel.send({ another: 'property' });
|
||||
});
|
||||
|
||||
client.login('absolutely-valid-token');
|
||||
|
||||
Reference in New Issue
Block a user