mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-14 18:43:31 +01:00
fix(APIMessage): edit shouldn't remove content (#3129)
* edit shouldn't remove content If undefined is passed to the api, content isn't removed in such a case where you are only editing the embed. * fix a related doc string * update typings * requested changes
This commit is contained in:
@@ -65,13 +65,18 @@ class APIMessage {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Makes the content of this message.
|
* Makes the content of this message.
|
||||||
* @returns {string|string[]}
|
* @returns {?(string|string[])}
|
||||||
*/
|
*/
|
||||||
makeContent() { // eslint-disable-line complexity
|
makeContent() { // eslint-disable-line complexity
|
||||||
const GuildMember = require('./GuildMember');
|
const GuildMember = require('./GuildMember');
|
||||||
|
|
||||||
// eslint-disable-next-line eqeqeq
|
let content;
|
||||||
let content = Util.resolveString(this.options.content == null ? '' : this.options.content);
|
if (this.options.content === null) {
|
||||||
|
content = '';
|
||||||
|
} else if (typeof this.options.content !== 'undefined') {
|
||||||
|
content = Util.resolveString(this.options.content);
|
||||||
|
}
|
||||||
|
|
||||||
const isSplit = typeof this.options.split !== 'undefined' && this.options.split !== false;
|
const isSplit = typeof this.options.split !== 'undefined' && this.options.split !== false;
|
||||||
const isCode = typeof this.options.code !== 'undefined' && this.options.code !== false;
|
const isCode = typeof this.options.code !== 'undefined' && this.options.code !== false;
|
||||||
const splitOptions = isSplit ? { ...this.options.split } : undefined;
|
const splitOptions = isSplit ? { ...this.options.split } : undefined;
|
||||||
@@ -88,24 +93,24 @@ class APIMessage {
|
|||||||
if (content || mentionPart) {
|
if (content || mentionPart) {
|
||||||
if (isCode) {
|
if (isCode) {
|
||||||
const codeName = typeof this.options.code === 'string' ? this.options.code : '';
|
const codeName = typeof this.options.code === 'string' ? this.options.code : '';
|
||||||
content = `${mentionPart}\`\`\`${codeName}\n${Util.escapeMarkdown(content, true)}\n\`\`\``;
|
content = `${mentionPart}\`\`\`${codeName}\n${Util.escapeMarkdown(content || '', true)}\n\`\`\``;
|
||||||
if (isSplit) {
|
if (isSplit) {
|
||||||
splitOptions.prepend = `${splitOptions.prepend || ''}\`\`\`${codeName}\n`;
|
splitOptions.prepend = `${splitOptions.prepend || ''}\`\`\`${codeName}\n`;
|
||||||
splitOptions.append = `\n\`\`\`${splitOptions.append || ''}`;
|
splitOptions.append = `\n\`\`\`${splitOptions.append || ''}`;
|
||||||
}
|
}
|
||||||
} else if (mentionPart) {
|
} else if (mentionPart) {
|
||||||
content = `${mentionPart}${content}`;
|
content = `${mentionPart}${content || ''}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const disableEveryone = typeof this.options.disableEveryone === 'undefined' ?
|
const disableEveryone = typeof this.options.disableEveryone === 'undefined' ?
|
||||||
this.target.client.options.disableEveryone :
|
this.target.client.options.disableEveryone :
|
||||||
this.options.disableEveryone;
|
this.options.disableEveryone;
|
||||||
if (disableEveryone) {
|
if (disableEveryone) {
|
||||||
content = content.replace(/@(everyone|here)/g, '@\u200b$1');
|
content = (content || '').replace(/@(everyone|here)/g, '@\u200b$1');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isSplit) {
|
if (isSplit) {
|
||||||
content = Util.splitMessage(content, splitOptions);
|
content = Util.splitMessage(content || '', splitOptions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -275,7 +280,7 @@ class APIMessage {
|
|||||||
/**
|
/**
|
||||||
* Transforms the user-level arguments into a final options object. Passing a transformed options object alone into
|
* Transforms the user-level arguments into a final options object. Passing a transformed options object alone into
|
||||||
* this method will keep it the same, allowing for the reuse of the final options object.
|
* this method will keep it the same, allowing for the reuse of the final options object.
|
||||||
* @param {StringResolvable} [content=''] Content to send
|
* @param {StringResolvable} [content] Content to send
|
||||||
* @param {MessageOptions|WebhookMessageOptions|MessageAdditions} [options={}] Options to use
|
* @param {MessageOptions|WebhookMessageOptions|MessageAdditions} [options={}] Options to use
|
||||||
* @param {MessageOptions|WebhookMessageOptions} [extra={}] Extra options to add onto transformed options
|
* @param {MessageOptions|WebhookMessageOptions} [extra={}] Extra options to add onto transformed options
|
||||||
* @param {boolean} [isWebhook=false] Whether or not to use WebhookMessageOptions as the result
|
* @param {boolean} [isWebhook=false] Whether or not to use WebhookMessageOptions as the result
|
||||||
@@ -284,7 +289,7 @@ class APIMessage {
|
|||||||
static transformOptions(content, options, extra = {}, isWebhook = false) {
|
static transformOptions(content, options, extra = {}, isWebhook = false) {
|
||||||
if (!options && typeof content === 'object' && !(content instanceof Array)) {
|
if (!options && typeof content === 'object' && !(content instanceof Array)) {
|
||||||
options = content;
|
options = content;
|
||||||
content = '';
|
content = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!options) {
|
if (!options) {
|
||||||
@@ -311,7 +316,7 @@ class APIMessage {
|
|||||||
/**
|
/**
|
||||||
* Creates an `APIMessage` from user-level arguments.
|
* Creates an `APIMessage` from user-level arguments.
|
||||||
* @param {MessageTarget} target Target to send to
|
* @param {MessageTarget} target Target to send to
|
||||||
* @param {StringResolvable} [content=''] Content to send
|
* @param {StringResolvable} [content] Content to send
|
||||||
* @param {MessageOptions|WebhookMessageOptions|MessageAdditions} [options={}] Options to use
|
* @param {MessageOptions|WebhookMessageOptions|MessageAdditions} [options={}] Options to use
|
||||||
* @param {MessageOptions|WebhookMessageOptions} [extra={}] - Extra options to add onto transformed options
|
* @param {MessageOptions|WebhookMessageOptions} [extra={}] - Extra options to add onto transformed options
|
||||||
* @returns {MessageOptions|WebhookMessageOptions}
|
* @returns {MessageOptions|WebhookMessageOptions}
|
||||||
|
|||||||
@@ -365,7 +365,7 @@ class Message extends Base {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Edits the content of the message.
|
* Edits the content of the message.
|
||||||
* @param {StringResolvable|APIMessage} [content=''] The new content for the message
|
* @param {StringResolvable|APIMessage} [content] The new content for the message
|
||||||
* @param {MessageEditOptions|MessageEmbed} [options] The options to provide
|
* @param {MessageEditOptions|MessageEmbed} [options] The options to provide
|
||||||
* @returns {Promise<Message>}
|
* @returns {Promise<Message>}
|
||||||
* @example
|
* @example
|
||||||
|
|||||||
2
typings/index.d.ts
vendored
2
typings/index.d.ts
vendored
@@ -56,7 +56,7 @@ declare module 'discord.js' {
|
|||||||
isWebhook?: boolean
|
isWebhook?: boolean
|
||||||
): MessageOptions | WebhookMessageOptions;
|
): MessageOptions | WebhookMessageOptions;
|
||||||
|
|
||||||
public makeContent(): string | string[];
|
public makeContent(): string | string[] | undefined;
|
||||||
public resolve(): Promise<this>;
|
public resolve(): Promise<this>;
|
||||||
public resolveData(): this;
|
public resolveData(): this;
|
||||||
public resolveFiles(): Promise<this>;
|
public resolveFiles(): Promise<this>;
|
||||||
|
|||||||
Reference in New Issue
Block a user