discord.js v13编写ping延迟命令报错无法读取ping属性如何解决
错误原因
报错指向你代码中${client.ws.ping}这一行,读取ping属性失败,说明此时client变量为undefined,核心问题是你execute函数的参数接收顺序和主文件调用命令时传入的参数顺序不匹配。同时你当前的bot延迟计算逻辑也存在问题,得到的会是负数结果。
修复方案
- 调整参数取值方式,改为直接从
message对象上挂载的client属性读取客户端实例,避免参数顺序不匹配的问题 - 修正延迟计算的顺序,用当前时间减去消息创建时间得到正确的延迟值
修复后的完整ping.js代码如下:
const Discord = require("discord.js"); module.exports = { name: 'ping', cooldown: 4, execute(message) { const bot = Date.now() - message.createdTimestamp; const ping = new Discord.MessageEmbed() .setTitle("Pong! :ping_pong:") .setDescription(`Bot latency: \`${bot}ms\`\n API latency: \`${message.client.ws.ping}ms\``) .setColor("#31e8b7") .setTimestamp() .setFooter(`${message.author.tag}`); message.channel.send({ embeds: [ping] }); }, };
如果不想修改取值逻辑,也可以直接检查你index.js中调用execute函数的代码,确保传入的第二个参数是client实例即可。
内容的提问来源于stack exchange,提问作者user16982681
相关产品推荐
相关产品推荐

