【问题标题】:How to make bot not stop after error? Discord.js如何让机器人在出错后不停止?不和谐.js
【发布时间】:2020-11-18 05:29:38
【问题描述】:

我有脚本必须有理由踢用户。

语法:

$kick @user 原因

但是当我输入时:

$kick sometext nexttext

我在控制台中遇到错误:

TypeError: Cannot read property 'kick' of undefined

然后机器人停止...

如何编辑此脚本,以便在输入错误值后不会弹出错误关闭机器人并且机器人将向通道发送消息,例如。 “值不正确”?

脚本:

const discord = require('discord.js');
const client = new discord.Client;
const prefix = "$";
 client.on('message', function(message) {
const args = message.content.slice(prefix.length).trim().split(/ +/g);

const command = args.shift().toLowerCase();

if(command === "kick") {

 let member = message.mentions.members.first();
 let reason = args.slice(1).join(" ");
  member.kick(reason);
  message.delete();
  client.channels.cache.get('737341022782357566').send("User <@" + member.id + "> with id " + member.id + " has been kicked by <@" + message.author.id + "> with reason " + reason)  

}})
client.login('token');

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:

    在javascript中执行有机会崩溃的代码,你可以使用statment

    try {
    //code to test
    } catch(err) {
    //code if it crash
    }
    

    【讨论】:

      【解决方案2】:

      添加if (member) 以测试是否有人提及。

      在 else 中,您可以发送“错误命令”消息

      如果消息以您的前缀开头,您也应该只触发机器人

      const discord = require('discord.js');
      const client = new discord.Client;
      const prefix = "$";
      
      client.on('message', function(message) {
        if (!message.content.startsWith(prefix)) { return } 
        //this line prevents the bot to execute every message
        const args = message.content.slice(prefix.length).trim().split(/ +/g);
      
        const command = args.shift().toLowerCase();
      
        if(command === "kick") {
      
          let member = message.mentions.members.first();
          let reason = args.slice(1).join(" ");
          if (member) { // add this
            member.kick(reason);
            client.channels.cache.get('737341022782357566').send(`User ${member.user} with id: ${member.id} has been kicked by ${message.author} with reason: ${reason}`); 
          } else {
            message.reply("invalid parameters for $kick")
          }
      
          message.delete();
        }
      })
      
      client.login('token');
      
      

      【讨论】:

      • 我收到错误:TypeError:无法读取未定义的属性“id”。 22行
      • 好的,我找到解决方案
      猜你喜欢
      • 2020-11-16
      • 2021-11-24
      • 2020-11-10
      • 2021-09-18
      • 2022-09-27
      • 2021-07-07
      • 1970-01-01
      • 2020-06-30
      • 2019-11-15
      相关资源
      最近更新 更多