【问题标题】:Discord.js Bot crashing while used commandDiscord.js Bot 在使用命令时崩溃
【发布时间】:2020-04-07 03:08:51
【问题描述】:

我的问题是当我写命令时! Tempmute(用户)(时间)和字段(时间)我会写例如 10 s / m / h / d 它工作得很好但是当我在这个字段中写其他字母时,机器人就会崩溃。 谁能告诉我如何解决它?提前致谢! 代码:

  if (command === `${prefix}tempmute`) {
    let tomute = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
    if(!tomute) return message.reply("Nie moge znaleźć określonego użytkownika");
    if(tomute.hasPermission("ADMINISTRATOR")) return message.reply("Ta osoba ma zbyt wysoką rangę lub nie masz permisji!");
    let muterole = message.guild.roles.find(r => r.name === "muted");

    if(!muterole){
      try {
        muterole =  message.guild.createRole({
          name: "muted",
          color: "#0000000",
          permissions: []
        })
        message.guild.channels.forEach(async (channel, id) => {
           channel.overwritePermissions(muterole,{
            SEND_MESSAGES: false,
            ADD_REACTIONS: false
          });
        });
      } catch(e) {
        console.log(e.stack);
      }
    }

    let mutetime = args[1];
    if(!mutetime) return message.reply("Wprowadź czas na jaki ma byc zmutowana osoba")

    tomute.addRole(muterole.id);
    message.reply(`<@${tomute.id}> został zmutowany na ${ms(ms(mutetime))}`);



    setTimeout(function(){
      tomute.id.removeRole(muterole.id);
      message.channel.send(`<@${tomute.id}> został odmutowany!`);
    }, ms(mutetime));

    }
  }

  );

控制台出错:

C:\Users\pr0mo\OneDrive\Pulpit\Discord Rust Bot\node_modules\ms\index.js:34
  throw new Error(
  ^
Error: val is not a non-empty string or a valid number. val=undefined
    at module.exports (C:\Users\pr0mo\OneDrive\Pulpit\Discord Rust Bot\node_modules\ms\index.js:34:9)
    at Client.<anonymous> (C:\Users\pr0mo\OneDrive\Pulpit\Discord Rust Bot\bot.js:241:58)
    at Client.emit (events.js:210:5)
    at MessageCreateHandler.handle (C:\Users\pr0mo\OneDrive\Pulpit\Discord Rust Bot\node_modules\discord.js\src\client\websocket\packets\handlers\MessageCreate.js:9:34)
    at WebSocketPacketManager.handle (C:\Users\pr0mo\OneDrive\Pulpit\Discord Rust Bot\node_modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:105:65)
    at WebSocketConnection.onPacket (C:\Users\pr0mo\OneDrive\Pulpit\Discord Rust Bot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:333:35)
    at WebSocketConnection.onMessage (C:\Users\pr0mo\OneDrive\Pulpit\Discord Rust Bot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:296:17)
    at WebSocket.onMessage (C:\Users\pr0mo\OneDrive\Pulpit\Discord Rust Bot\node_modules\ws\lib\event-target.js:120:16)
    at WebSocket.emit (events.js:210:5)
    at Receiver.receiverOnMessage (C:\Users\pr0mo\OneDrive\Pulpit\Discord Rust Bot\node_modules\ws\lib\websocket.js:789:20)

【问题讨论】:

  • 您可以尝试添加console.log(mutetime) 吗?我认为它是未定义的

标签: javascript discord.js


【解决方案1】:

将您的代码添加到try catch 语句中它不会再崩溃,但是如果您想检查参数是否与您想要的相符,您可以制作一个正则表达式

尝试捕捉:

try
{

}catch(error)
{
console.log(error)
}

正则表达式:

var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
    mutetime);
 if(!match)return;

【讨论】:

    猜你喜欢
    • 2021-04-07
    • 2021-04-02
    • 2020-09-10
    • 1970-01-01
    • 2019-07-23
    • 2020-04-08
    • 2021-11-19
    • 2018-07-28
    • 1970-01-01
    相关资源
    最近更新 更多