【问题标题】:Discord.js Ping CommandDiscord.js Ping 命令
【发布时间】:2020-12-04 06:04:35
【问题描述】:

我试图为我的机器人创建一个 ping 命令,这是我的代码

client.on('message', message => {
  if (message.content === '+ping') {  
    message.channel.send(`????Latency is ${m.createdTimestamp - message.createdTimestamp}ms. API Latency is ${Math.round(client.ws.ping)}ms`);
  }
});

但是我最终得到以下错误

C:\Users\ujjwa\Desktop\All Disc\Test all\index.js:236
    message.channel.send(`????Latency is ${m.createdTimestamp - message.createdTimestamp}ms. API Latency is ${Math.round(client.ws.ping)}ms`);
                                     ^

ReferenceError: m is not defined
    at Client.<anonymous> (C:\Users\lol\Desktop\All Disc\Test all\index.js:236:42)
    at Client.emit (events.js:327:22)
    at MessageCreateAction.handle (C:\Users\lol\Desktop\All Disc\Test all\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\lol\Desktop\All Disc\Test all\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:\Users\lol\Desktop\All Disc\Test all\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
    at WebSocketShard.onPacket (C:\Users\lol\Desktop\All Disc\Test all\node_modules\discord.js\src\client\websocket\WebSocketShard.js:436:22)
    at WebSocketShard.onMessage (C:\Users\lol\Desktop\All Disc\Test all\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
    at WebSocket.onMessage (C:\Users\lol\Desktop\All Disc\Test all\node_modules\ws\lib\event-target.js:125:16)
    at WebSocket.emit (events.js:315:20)
    at Receiver.receiverOnMessage (C:\Users\lol\Desktop\All Disc\Test all\node_modules\ws\lib\websocket.js:797:20)

你能帮帮我吗?

【问题讨论】:

  • 您的意思是message 而不是m?或者你在哪里定义m
  • 哦,谢谢,我是说那边的消息

标签: javascript node.js discord discord.js


【解决方案1】:

您需要使用Date.now() - message.createdTimestamp 来获取延迟。

client.on('message', message => {
  if (message.content === '+ping') {  
    message.channel.send(`?Latency is ${Date.now() - message.createdTimestamp}ms. API Latency is ${Math.round(client.ws.ping)}ms`);
  }
});

【讨论】:

  • 这只会获取 API 和机器人之间的时间。通常,ping 会计算从 A 发送到 B 并返回到 A 所需的时间。了解一种方式的延迟仍然很有用,但是将其与其他 ping 进行比较会产生误导。
  • 我们当然可以对上面的答案实施这样的建议。
  • 我知道你对 tbh 的看法,它显示了 api 延迟和机器人的延迟——用户将体验到的一个
  • 我只是指出,“ping”通常是指网络数据包从源传输到目的地并返回源的时间。比较远程时间和本地时间会显示它们之间的延迟,但不一定来回。
  • 在 Discord 上,“ping”是指延迟。
【解决方案2】:
client.on('message', message => {
  if (message.content === prefix + 'ping') {
  message.channel.send('Loading data').then (async (msg) =>{
    msg.delete()
    message.channel.send(`?Latency is ${msg.createdTimestamp - message.createdTimestamp}ms. API Latency is ${Math.round(client.ws.ping)}ms`);
  })
  }
});

【讨论】:

  • +1。不知道为什么这个答案被否决了。这更准确,因为它测试两种方式,就像 ping 一样。将now 与消息的时间戳进行比较只会测试单向延迟。
【解决方案3】:

我使用这个作为我的 Ping 命令(如果我犯了任何错误,抱歉,我最近 2 天才学习 JavaScript)

module.exports={
    name:'ping',
    description: "Command ini digunakan untuk Ping",
    execute(message, args){
        message.channel.send(`?Latency is ${Date.now() - message.createdTimestamp}ms`);
        }
      };

【讨论】:

    【解决方案4】:

    你需要使用 .then() 来获得 m:

    client.on('message', message => {
      if (message.content === '+ping') {  
    message.channel.send('pinging').then(m => {
        m.edit(`?Latency is ${m.createdTimestamp - message.createdTimestamp}ms. API Latency is ${Math.round(client.ws.ping)}ms`);
      });
    }
    });
    

    【讨论】:

      【解决方案5】:

      你需要做的

      client.on('message', message => {
        if (message.content === '+ping') {  
          message.channel.send(`?Latency is ${Date.now() - message.createdTimestamp}ms. API Latency is ${Math.round(client.ws.ping)}ms`);
        }
      });
      

      【讨论】:

        【解决方案6】:

        我使用了现在日期和消息创建时间戳和 api ping 的代码。

        module.exports = {
          name: "ping",
          category: "info",
          description: "Get bot ping :/",
          usage: "ping",
          run: (client, message) => {
            message.channel.send(`**:ping_pong:Latency is ${Date.now() - message.createdTimestamp}ms. API Latency is ${Math.round(client.ws.ping)}ms.:ping_pong:**`);
          }
          
        }
        

        【讨论】:

          【解决方案7】:

          对我来说,我使用它似乎对我有用!

          module.exports = {
              name: 'ping',
              discription: 'description',
              execute(message, args) {
                  message.channel.send(`? | Latency is: **${Date.now() - message.createdTimestamp}ms.**`);
              },
          };
          

          【讨论】:

            猜你喜欢
            • 2020-04-29
            • 1970-01-01
            • 1970-01-01
            • 2021-10-11
            • 1970-01-01
            • 2021-08-07
            • 1970-01-01
            • 2021-06-01
            • 2021-03-29
            相关资源
            最近更新 更多