Discord.js Команда Ping

#javascript #node.js #discord #discord.js

#javascript #node.js #Discord #discord.js

Вопрос:

Я пытался создать команду 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:UsersujjwaDesktopAll DiscTest allindex.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:UserslolDesktopAll DiscTest allindex.js:236:42)
    at Client.emit (events.js:327:22)
    at MessageCreateAction.handle (C:UserslolDesktopAll DiscTest allnode_modulesdiscord.jssrcclientactionsMessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:UserslolDesktopAll DiscTest allnode_modulesdiscord.jssrcclientwebsockethandlersMESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:UserslolDesktopAll DiscTest allnode_modulesdiscord.jssrcclientwebsocketWebSocketManager.js:386:31)
    at WebSocketShard.onPacket (C:UserslolDesktopAll DiscTest allnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:436:22)
    at WebSocketShard.onMessage (C:UserslolDesktopAll DiscTest allnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:293:10)
    at WebSocket.onMessage (C:UserslolDesktopAll DiscTest allnode_moduleswslibevent-target.js:125:16)
    at WebSocket.emit (events.js:315:20)
    at Receiver.receiverOnMessage (C:UserslolDesktopAll DiscTest allnode_moduleswslibwebsocket.js:797:20)
  

Не могли бы вы мне помочь?

Комментарии:

1. Вы имели в виду message вместо m ? Или где вы определили m ?

2. о, спасибо, я имел в виду сообщение вон там

Ответ №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`);
  }
});
  

Комментарии:

1. Это позволит получить только время между API и ботом. Обычно при ping учитывается время, необходимое для отправки из A в B и обратно в A. Знание задержки одним способом все еще полезно, однако сравнение его с другими pings будет вводить в заблуждение.

2. Мы, конечно, можем реализовать такое предложение к ответу выше.

3. Idk что вы думаете о tbh, это показывает задержку api и бота — ту, с которой столкнется пользователь

4. Я просто указываю, что «ping» обычно относится ко времени прохождения сетевых пакетов от источника к месту назначения и обратно к источнику. Сравнение удаленного времени с местным покажет задержку между ними, но не обязательно туда и обратно.

5. В 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. 1. Не уверен, почему этот ответ был отклонен. Это более точно, потому что оно проверяет оба способа, как и должен выполнять ping. Сравнение now с меткой времени сообщения будет проверять только одностороннюю задержку.

Ответ №3:

Я использую это как свою команду Ping (извините, если я допускаю какую-либо ошибку, я только что изучил JavaScript за последние 2 дня)

 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.

 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.**`);
    },
};