【问题标题】:why does my bot crash with an undefined error after one use?为什么我的机器人在使用一次后会因未定义的错误而崩溃?
【发布时间】:2020-05-23 03:30:09
【问题描述】:

我的 discord 机器人有这组代码,如果你知道那是什么的话,它应该可以通过说、拥抱或亲吻命令来工作。

问题是它运行一次然后由于未定义显示名称而崩溃?

这是我的代码:

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('ready', () => {
  console.log(Logged in as ${client.user.tag}!);
});

client.on('message', message => { 
  let personTagged = message.mentions.members.first();
  message.channel.send(message.author.username + ' has shelled ' + personTagged.displayName + ' ' + doshellAction());
});

function doshellAction() {
    var rand = [
        'https://media.discordapp.net/attachments/690130408276230195/712567336971927582/ku-xlarge_2.gif',
        'https://media.discordapp.net/attachments/690127154742165504/712574767357493248/giphy_1.gif',
        'https://media.discordapp.net/attachments/690130408276230195/712586095908487168/SizzlingFrailItaliangreyhound-size_restricted.gif',
        'https://media.discordapp.net/attachments/690130408276230195/712586190418608149/NegligibleColorfulAfricanrockpython-size_restricted.gif',
        'https://media.discordapp.net/attachments/690130408276230195/712586220907003944/BruisedSparseButterfly-max-1mb.gif'

    ];
    return rand[Math.floor(Math.random() * rand.length)];
}

client.login('removed for privacy');

【问题讨论】:

  • 你遇到了什么错误
  • "TypeError: 无法读取未定义的属性 'displayName'"
  • 即使在提及会员时也会出现该错误?
  • 是的。不知道为什么? ://

标签: javascript discord discord.js


【解决方案1】:

您没有检查任何类型的前缀,因此机器人看到的任何消息都会触发您的代码,这些消息并不总是提到某人。您可以采取的措施是在运行代码之前添加检查,以确保用户确实打算与您的机器人交互:

client.on('message', message => {
   if (!message.content.startsWith('shell')) return;
   let personTagged = message.mentions.members.first();
   message.channel.send(message.author.username + ' has shelled ' + personTagged.displayName + ' ' + doshellAction())
});

在上面的示例中,我们检查消息是否以shell 开头,如果不是则返回。为了触发您的代码,用户可以将shell @someone 发布到机器人可以看到的任何频道。

【讨论】:

  • 嘿,非常感谢,如果我打扰了,我很抱歉,但我尝试运行它,它给我一个“TypeError:无法读取未定义的属性'startsWith'”错误代码
  • @colbycanterbury 我的代码中有错字。再试一次?
猜你喜欢
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
  • 2015-02-12
  • 2021-01-03
相关资源
最近更新 更多