所以我最近决定做一个Discord bot,并且已经通过一些教程没有问题。然而,当我试图发出一个 ping 命令时(你知道,那种说“你的 ping 是 137 ms
”的命令),我得到了没有意义的数字。-627 ms
等数字, 32 ms
, 1001 ms
, -10 ms
, 238 ms
.基本上介于 -1000
之间的任何东西和 1000
.
如果我错了,现在纠正我,但我很确定得到负数意味着我什至在我要求之前就发送了响应,而且我几乎可以肯定我没有写一个预认知机器人:P
我花了一些时间在网上寻找为什么我收到奇怪的 ping 号码的原因,但我想出了 zilch。我心想,“嗯......也许我生成它们是错误的。”所以我查看了其他人如何使用 discord.js 生成他们的数字......
...aaaand 我撞到了墙。据我所知,没有人尝试过使用 discord.js 生成 ping 号码。如果他们有,他们还没有在网上分享他们宝贵的发现。至少,在我看来是这样的。 (如果您有此类教程或帖子的链接,请发给我)
我正在使用 ${Date.now() - message.createdTimestamp}
生成数字这是我发现生成它们的唯一方法,所以如果有人有更好的方法,我很乐意看到它。
该片段正好适合我的其余代码(是的,它是一个非常无聊的机器人):
const Discord = require('discord.js');
const client = new Discord.Client();
const token = require('./token.json').token;
client.on('ready', () => {
console.log('Bot is up and running!');
});
var prefix = "?"
client.on('message', message => {
if (message.author.bot) return;
if (!message.content.startsWith(prefix)) return;
if (message.content.startsWith(prefix + 'ping')) {
message.channel.sendMessage('Pong! Your ping is `' + `${Date.now() - message.createdTimestamp}` + ' ms`');
}
});
client.login(token);
如果有人能给我一个为什么我得到负数的原因,或者给我一个更好的方法来生成它们,我将非常感激。提前致谢。
最佳答案
您遇到的 ping 变化是由于您的时钟和远程时钟之间的变化以及用于计算时间戳的消息 ID 不那么准确。
在跳到 ping 的一种含义之前,您必须决定要测量的内容。如果您希望测量发送消息的往返时间并从不和谐中获取相同的消息,您可能会发送不和谐消息,启动计时器。然后当 promise 解决时检查已经过去了多少时间。
您也可以按照心跳 ping 的另一个答案中的建议使用 .ping 。
您也可以 ping api 端点,尽管您可能只会测量您对 cloudflare 的延迟......
关于javascript - Discord.js Ping 号码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43501960/