编辑消息时消息内容必须为非空字符串
Message content must be a non-empty string when editing message
我想发出一个命令让机器人 return 它与数据库的连接状态,但是我得到了一个错误,我现在有点困惑。
RangeError [MESSAGE_CONTENT_TYPE]: Message content must be a non-empty string.
const { MessageEmbed } = require('discord.js');
const quick = require('quick.db');
module.exports = {
name: 'ping',
aliases: [],
description: 'Get bot ping.',
permissions: [],
async execute(message, client) {
const ping = await getDBPingData();
const messagePing = Date.now();
const msg = await message.channel.send('Loading...');
const endMessagePing = Date.now() - messagePing;
const embed = new MessageEmbed()
.setDescription(
`
Database ping data:
- Fetch ping: \`${ping.endGet}ms\`
- Wright ping: \`${ping.endWright}ms\`
- Avrage ping: \`${ping.avarage}ms\`
Message ping: \`${endMessagePing}ms\`
`
)
.setColor('GREEN')
.setTimestamp();
msg.edit({
content: '',
embed,
});
},
};
async function getDBPingData() {
// get the fetch data ping
const startGet = Date.now();
await quick.get('QR=.');
const endGet = Date.now() - startGet;
// get the wright data ping
const startWright = Date.now();
await quick.set('QR=.', Buffer.from(startWright.toString()).toString('base64'));
const endWright = Date.now() - startWright;
// avrage ping time
const avarage = (endGet + endWright) / 2;
try {
quick.delete('QR=.');
} catch (error) {}
return { endGet, endWright, avarage };
}
我正在使用 discord.js v13,此命令使用的软件包是:discord.js
和 quick.db
.
试试这个:
// only need to edit embed in an embeds array
msg.edit({ embeds: [embed] })
在 v13 中,机器人发送的消息现在最多支持 10 个嵌入。因此,嵌入选项被删除并替换为嵌入数组,该数组必须位于选项对象中,因此您的消息编辑应为 msg.edit({ embeds: [embed] })
.
如果您还想删除之前的文本 (Loading...),您需要添加 content: null
作为空字符串 (''
) 因为 content
会抛出 RangeError
.
msg.edit({
content: null,
embeds: [embed],
});
我想发出一个命令让机器人 return 它与数据库的连接状态,但是我得到了一个错误,我现在有点困惑。
RangeError [MESSAGE_CONTENT_TYPE]: Message content must be a non-empty string.
const { MessageEmbed } = require('discord.js');
const quick = require('quick.db');
module.exports = {
name: 'ping',
aliases: [],
description: 'Get bot ping.',
permissions: [],
async execute(message, client) {
const ping = await getDBPingData();
const messagePing = Date.now();
const msg = await message.channel.send('Loading...');
const endMessagePing = Date.now() - messagePing;
const embed = new MessageEmbed()
.setDescription(
`
Database ping data:
- Fetch ping: \`${ping.endGet}ms\`
- Wright ping: \`${ping.endWright}ms\`
- Avrage ping: \`${ping.avarage}ms\`
Message ping: \`${endMessagePing}ms\`
`
)
.setColor('GREEN')
.setTimestamp();
msg.edit({
content: '',
embed,
});
},
};
async function getDBPingData() {
// get the fetch data ping
const startGet = Date.now();
await quick.get('QR=.');
const endGet = Date.now() - startGet;
// get the wright data ping
const startWright = Date.now();
await quick.set('QR=.', Buffer.from(startWright.toString()).toString('base64'));
const endWright = Date.now() - startWright;
// avrage ping time
const avarage = (endGet + endWright) / 2;
try {
quick.delete('QR=.');
} catch (error) {}
return { endGet, endWright, avarage };
}
我正在使用 discord.js v13,此命令使用的软件包是:discord.js
和 quick.db
.
试试这个:
// only need to edit embed in an embeds array
msg.edit({ embeds: [embed] })
在 v13 中,机器人发送的消息现在最多支持 10 个嵌入。因此,嵌入选项被删除并替换为嵌入数组,该数组必须位于选项对象中,因此您的消息编辑应为 msg.edit({ embeds: [embed] })
.
如果您还想删除之前的文本 (Loading...),您需要添加 content: null
作为空字符串 (''
) 因为 content
会抛出 RangeError
.
msg.edit({
content: null,
embeds: [embed],
});