【问题标题】:Ping bot response time command not workingPing bot 响应时间命令不起作用
【发布时间】:2022-01-25 19:23:06
【问题描述】:

为什么这个命令不起作用我是编码新手,非常感谢一些帮助我没有收到任何错误我很难自己发现问题。

client.on('messageCreate', message => {
    if (message.channel.type != 'text' || message.author.bot)
      return;
  
    let command = message.content.split(' ')[0].slice(1);
    let args = message.content.replace('.' + command, '').trim();
  
    switch (command) {
      case 'ping': {
        message.channel.send('Pong! (~ ' + client.ping + 'ms)');
        break;
      }
  
  
      case 'uptime': {
        // client.uptime is in millseconds
        // this is just maths, I won't explain much of it
        // % is modulo, AKA the remainder of a division
        let days = Math.floor(client.uptime / 86400000);
        let hours = Math.floor(client.uptime / 3600000) % 24;
        let minutes = Math.floor(client.uptime / 60000) % 60;
        let seconds = Math.floor(client.uptime / 1000) % 60;
  
        message.channel.send(`__Uptime:__\n${days}d ${hours}h ${minutes}m ${seconds}s`);
        break;
      }
    }
  });

【问题讨论】:

    标签: javascript discord.js command bots


    【解决方案1】:

    问题是您正在检查GuildChannel#type 是否为text,这不是有效的ChannelType

    请尝试使用GUILD_TEXT

    client.on('messageCreate', message => {
        if (message.channel.type !== 'GUILD_TEXT' || message.author.bot)
            return;
    
        let command = message.content.split(' ')[0].slice(1);
        let args = message.content.replace('.' + command, '').trim();
    
        switch (command) {
            case 'ping': {
                message.channel.send('Pong! (~ ' + client.ping + 'ms)');
                break;
            }
    
    
            case 'uptime': {
                // client.uptime is in millseconds
                // this is just maths, I won't explain much of it
                // % is modulo, AKA the remainder of a division
                let days = Math.floor(client.uptime / 86400000);
                let hours = Math.floor(client.uptime / 3600000) % 24;
                let minutes = Math.floor(client.uptime / 60000) % 60;
                let seconds = Math.floor(client.uptime / 1000) % 60;
    
                message.channel.send(`__Uptime:__\n${days}d ${hours}h ${minutes}m ${seconds}s`);
                break;
            }
        }
    });
    

    注意:在 2022 年 4 月,访问消息内容将成为特权意图。我真的建议你切换到Slash Commands

    在此处阅读更多信息:Message Content: Privileged Intent for Verified Bots

    【讨论】:

    • 感谢您提供帮助,确实让机器人响应,但它以未定义的毫秒而不是实际毫秒响应,因此该命令仍然无法正常工作您知道为什么会出现这种情况.
    • @ManicCoder 你试过记录client.uptime吗?是未定义的吗?
    • 我还没有尝试过。只是为了澄清你的意思是控制台记录事件或交互或任何你称之为是的?你知道可以向我展示我需要的信息来学习如何做到这一点的指南吗?我对这一切都非常陌生,但已经准备好并渴望学习
    • 尝试在messageCreate事件中运行console.log(client.uptime),看看它是否未定义。
    • 我终于弄清楚了如何正确地做到这一点,它是控制台记录数字,我认为这意味着它在终端中没有未定义,但在不和谐的消息中仍然未定义。
    猜你喜欢
    • 2019-07-23
    • 2022-01-04
    • 1970-01-01
    • 2020-12-15
    • 2021-08-28
    • 2021-02-17
    • 2020-09-12
    相关资源
    最近更新 更多