You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.js获取interaction.reply()延迟 解决ping命令返回负值问题

你得到负数结果的核心原因是运行机器人的设备系统时间与Discord服务器时间不同步:interaction.createdTimestamp是Discord服务器侧生成的交互创建时间戳,而Date.now()取的是你本地设备的时间,若本地时间比Discord服务器时间慢,两者相减就会出现负数。

方案1:同步系统时间(临时修复)

直接同步你运行机器人设备的系统时间到标准NTP时间,就可以解决负数问题,但该方法依然依赖时间同步状态,可靠性不高。

方案2:通过交互回复时间差计算(更稳定,无需依赖时间同步)

先给交互返回一个临时占位响应,再通过「响应完成时间 - 收到交互的时间」计算实际延迟,同时可以直接获取机器人到Discord网关的延迟,参考代码如下(discord.js v14 可用):

// 收到斜杠命令交互后的处理逻辑
const recvTime = Date.now();
// 先发送临时回复,满足Discord要求的3秒内响应规则
await interaction.reply("计算延迟中...");
// 计算交互延迟:发送完回复的时间减去收到交互的时间
const interactionLatency = Date.now() - recvTime;
// 网关延迟:discord.js内置的ws网关心跳延迟
const gatewayLatency = interaction.client.ws.ping;

// 编辑回复展示最终结果
await interaction.editReply(`🏓 Pong!
- 交互响应延迟:${interactionLatency}ms
- 网关连接延迟:${gatewayLatency}ms`);

如果一定要用interaction.createdTimestamp计算,你可以预先计算本地时间和Discord服务器的固定偏移量,计算时校正偏移即可:

// 全局存储时间偏移量,可每次收到交互时更新
const timeOffset = Date.now() - interaction.createdTimestamp;
// 校正后的延迟
const latency = Date.now() - interaction.createdTimestamp - timeOffset;

内容的提问来源于stack exchange,提问作者MegaMix_Craft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 14:15:01