bot.on('messageReactionAdd', async (reaction, user) => {
// Define the emoji user add
let role = message.guild.roles.find(role => role.name === 'Alerts');
if (message.channel.name !== 'alerts') return message.reply(':x: You must go to the channel #alerts');
message.member.addRole(role);
});
那是我的 bot.js 的一部分。我希望用户在某个频道做出反应并接收角色警报
原文由 Bixi 发布,翻译遵循 CC BY-SA 4.0 许可协议
你还没有真正说明问题是什么,什么有效,什么无效,但我会在一些引起我注意的部分进行疯狂的尝试。
对于初学者,您正在调用变量
message
的属性,而在您提供的代码中,您没有创建/设置名为message
的变量。我的猜测是您想要添加了反应的消息。为此,您必须使用messageReactionAdd
事件中提供的MessageReaction
参数reaction
。从那里您可以将
message.<something>
替换为reaction.message.<something>
您提供的代码中的任何地方。还需要注意的是,您将角色 Alerts 添加到
message.member
。这不会按您希望的方式工作,因为它将向原始消息的作者提供警报角色。(我认为)您想做的是获取刚刚对表情符号做出反应的用户并为他们分配警报角色。您必须先在公会中找到成员,然后为他们分配警报角色。为此,您必须使用
User
参数并找到正确的Member
因为您不能向 User 对象添加角色,但可以向 Member 对象添加角色。下面是一些代码,希望能让您走上正确的轨道。