【问题标题】:Uncaught Promise Error: TypeError: member is not a function未捕获的 Promise 错误:TypeError:成员不是函数
【发布时间】:2019-10-31 15:00:48
【问题描述】:

使用我的验证机器人,它会向用户发送消息,用户用代码做出响应,并且它应该赋予角色。但是,它什么也不做并发布此错误。

未捕获的承诺错误:
类型错误:member 不是函数

我尝试将users 更改为members 反之亦然,而是在配置中定义公会、角色等,但都没有解决错误。

client.on('message', async (message) => {
    if (message.author.bot || !message.author.token || message.channel.type !== `dm`) return
    if (message.content !== (verifymsg.replace('{token}', message.author.token))) return
    message.channel.send({
        embed: {
            color: Math.floor(Math.random() * (0xFFFFFF + 1)),
            description: completemsg,
            footer: {
                text: `Verification Success`
            }
        }
    })
  let member = message.mentions.users.first(); 
    member(message.member).addRole(member.guild("528721525390442526").roles.find("name", "Member"));
})

我希望为成员添加一个角色,让他们可以访问公会。

【问题讨论】:

    标签: javascript node.js typeerror discord.js


    【解决方案1】:

    您编写member(message.member) 的方式是告诉JavaScript 执行带有参数message.member 的函数member()。您尚未在代码中的任何位置定义上述函数,这就是它抛出错误的原因。

    您想使用Guild.member() 方法

    例子:

    try {
      const guild = client.guilds.get('528721525390442526');
      const member = guild.member(message.author.id);
      const role = guild.roles.find(r => r.name === 'Member');
    
      member.addRole(role);
      member.send('Verification successful.');
    } catch(err) {
      console.error(err);
    }
    

    【讨论】:

    • 干杯,除此之外,我还尝试更改“message.mentions.members.first();”到“message.mentions.users.first();”因为每当我使用 members.first 时,我总是收到“TypeError:无法读取属性‘first’ of null”
    • 听起来命令作者没有提到任何人。我编辑了代码以首先检查是否有提到的成员。
    • 它会上升到它响应“已验证”的位置,但它仍然没有添加角色,我已经尝试过“member.addRole("name", "Member");"但没有。
    • 我再次编辑了代码以更详细地显示角色添加。
    • 今天真的不喜欢我,“ReferenceError: member is not defined”。 " if (!message.mentions.members) return message.channel.send(member.toString() + "感谢您的验证。");"没有标记他们,我认为这就是为什么它没有给他们所说的角色。