我该如何解决这个承诺?

Posted

技术标签:

【中文标题】我该如何解决这个承诺?【英文标题】:How can I resolve this promise? 【发布时间】:2021-06-29 18:41:53 【问题描述】:

这是我的代码:

    collector.on('collect', async (reaction, user) => 
        console.log(reaction);
        if (!user.bot) 
            let role = reaction.message.guild.roles.cache.find(role => role.name === ra[emojiarray.indexOf(reaction)]);
            await reaction.message.guild.members.fetch(user).roles.add(role);
        
    );

除非我收到错误 UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'add' of undefined。我被告知要兑现承诺,我尝试过,但我想我没有做对。我该如何解决这个问题?

谢谢!

【问题讨论】:

【参考方案1】:

您可能需要await获取用户,然后将角色添加到用户。

collector.on('collect', async (reaction, user) => 
        console.log(reaction);
        if (!user.bot) 
            let role = reaction.message.guild.roles.cache.find(role => role.name === ra[emojiarray.indexOf(reaction)]);
            let userMember = await reaction.message.guild.members.fetch(user);
            userMember.roles.add(role);
        
    );

【讨论】:

嗯。我得到了UnhandledPromiseRejectionWarning: ReferenceError: Cannot access 'user' before initialization 对不起!我更新了变量名,因为我太快添加了 user 变量。我将添加的user 变量更改为userMember,因此它不会与参数冲突。 哈哈没问题!仍然出现错误,但我认为这不再是问题了。你是最棒的,谢谢!! 我可以通过查看完整代码来更好地帮助您。您可以使用 replit.com 之类的网站来托管 NodeJS 代码并在此处分享。

以上是关于我该如何解决这个承诺?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决Arango查询承诺错误? [重复]

ArgumentError('对象 \'deviceInfo' 缺少属性:deviceId');我该如何解决这个问题?

我该如何解决这个问题?

我该如何解决这个错误,它的原因是啥?

为啥我缺少 C++20 标头?我该如何解决这个问题?

我该如何解决这个错误,SQLSTATE [42000]? [复制]