2017-04-19 65 views
0

所以我最近决定做一个Discord机器人,并且已经经历了一些教程,没有问题。然而,当我试图做一个ping命令(你知道,那种说“你的ping是137 ms”)的时候,我得到的数字没有意义。麻烦与Discord.js坪数

数字如-627 ms,32 ms,1001 ms, -10 ms,238 ms。基本上任何东西都在-10001000之间。

现在,纠正我,如果我错了,但我敢肯定,得到负数意味着我发送响应之前,我甚至问它,我几乎可以肯定我没有写预知机器人:P

我花了一些时间在网上找原因,​​我是越来越奇怪平的数字,但我想出了小人物。我心想,“嗯......也许我错了。”所以我看着其他人如何生成他们的号码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); 

如果有人可以给我一个理由,为什么我得到负数,或给我一个更好的方式来产生他们,我会非常感激。提前致谢。

回答

0

在您遇到ping到变化是由于,以及您的时钟和远程时钟之间的差异来计算不是所有的准确时间戳的消息的ID。

在你跳转到一个意为平安,你必须决定你要测量什么。如果您正在测量发送消息的往返时间,并从同一条消息回到不一致的地方,您可能会发送不一致消息,启动计时器。那么当承诺解决时,检查已经过了多少时间。

你也可以使用.ping作为另一个答案心跳平建议。

你也可以ping通API端点,虽然你可能只测量你的延迟的CloudFlare ...

-1

我很抱歉,你面对你的不和谐机器人这个问题。我用你的代码分析了这个问题,并提出了这个解决方案。你看你怎么有:

${Date.now() - message.createdTimestamp} 

好了,所有你需要做的就是围绕“Date.now()”和“message.createdTimestamp”交换周围

你将从此实现的是:

${message.createdTimestamp - Date.now()} 

这个方法我试过,它工作得很好。它给了我最准确的结果。

希望这个答案帮你!