繁体   English   中英

类型错误:无法读取未定义的属性“添加”

[英]TypeError: Cannot read the property 'add' of undefined

我一直在尝试让我的不和谐机器人为我服务器上的成员添加角色,但是每当我运行我的命令时,它都不起作用并且总是说:

类型错误:无法读取未定义的属性“添加”

我什至尝试用.add()替换.addRole() ,但没有任何效果。

这是我的代码:

command(client, 'add', (message) => {
  const target = message.mentions.members.first
  const role = message.mentions.roles.first

  const embed = new Discord.MessageEmbed()
  .setColor('RANDOM')
  .setDescription(`Added the role ${role}`)

  .then(target.roles.addRole(role));
  })
console.log('Commands are set')

有几个错误:

  • mentions.membersmentions.roles返回具有 [ first()][1]方法的集合(不是属性,因此您需要添加括号)
  • 你不处理错误
  • 你不检查是否有提到的角色和成员
  • .setDescription()不返回承诺,而是返回MessageEmbed
  • .then()您应该传递一个函数,而是调用.addRole()并传递一个值
  • 如果您使用的是 discord.js v12,则addRole()现在只是add()

看看下面的代码:

command(client, 'add', async (message) => {
  // first is a method not a property
  const target = message.mentions.members.first();
  const role = message.mentions.roles.first();

  // if something is missing, send an error message
  if (!role) return message.channel.send('You need to mention a role');
  if (!target) return message.channel.send('You need to mention a member');

  try {
    // add the role
    await target.roles.add(role);

    const embed = new Discord.MessageEmbed()
      .setColor('RANDOM')
      .setDescription(`Added the role ${role}`);
    message.channel.send(embed);
  } catch (err) {
    console.err(err);
    message.channel.send('Oops, there was an error. Maybe try again?!');
  }
});

在此处输入图片说明

.then(target.roles.addRole(role));

应该是

.then(() => target.roles.addRole(role));

除此之外,您需要弄清楚为什么target.roles未定义。 您可以从记录target开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM