Node.js 16+DiscordJS v13实现带延迟数据的Discord机器人Embed消息
适配DiscordJS v13的ping命令完整实现
首先需要在命令文件头部引入MessageEmbed构造器,完整代码如下:
const { MessageEmbed } = require('discord.js'); module.exports = { name: "ping", execute(message, args) { // 发送临时消息计算往返延迟 message.channel.send("正在计算延迟...").then(sentMsg => { // 机器人自身往返延迟:临时消息创建时间 - 原命令消息创建时间 const botLatency = sentMsg.createdTimestamp - message.createdTimestamp; // Discord官方API延迟 const apiLatency = Math.round(message.client.ws.ping); // 构造Embed实例 const pingEmbed = new MessageEmbed() .setColor('#5865F2') // 可替换为你需要的色值,和示例匹配即可 .setTitle('🏓 Pong') .addFields( { name: '机器人延迟', value: `${botLatency}ms`, inline: true }, { name: 'API延迟', value: `${apiLatency}ms`, inline: true } ) .setTimestamp() .setFooter({ text: `请求由 ${message.author.tag} 触发`, iconURL: message.author.displayAvatarURL({ dynamic: true }) }); // 替换临时消息为Embed sentMsg.edit({ content: null, embeds: [pingEmbed] }); }); }, };
关键说明
- DiscordJS v13必须通过
MessageEmbed构造器生成嵌入消息,不可直接传入对象字面量 - 计算逻辑完全符合需求:通过两条消息的时间戳差得到机器人自身的实际响应延迟,API延迟直接调用客户端内置的WebSocket ping值,数据准确
- 可自行调整Embed的
setColor、字段名称、图标等参数,和你预期的示例样式对齐即可
内容的提问来源于stack exchange,提问作者user16386411
相关产品推荐
相关产品推荐

