Discord JS // 尝试通过对消息做出反应来添加角色

新手上路,请多包涵
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 许可协议

阅读 348
1 个回答

你还没有真正说明问题是什么,什么有效,什么无效,但我会在一些引起我注意的部分进行疯狂的尝试。

对于初学者,您正在调用变量 message 的属性,而在您提供的代码中,您没有创建/设置名为 message 的变量。我的猜测是您想要添加了反应的消息。为此,您必须使用 messageReactionAdd 事件中提供的 MessageReaction 参数 reaction

从那里您可以将 message.<something> 替换为 reaction.message.<something> 您提供的代码中的任何地方。

还需要注意的是,您将角色 Alerts 添加到 message.member 。这不会按您希望的方式工作,因为它将向原始消息的作者提供警报角色。

(我认为)您想做的是获取刚刚对表情符号做出反应的用户并为他们分配警报角色。您必须先在公会中找到成员,然后为他们分配警报角色。为此,您必须使用 User 参数并找到正确的 Member 因为您不能向 User 对象添加角色,但可以向 Member 对象添加角色。下面是一些代码,希望能让您走上正确的轨道。

 // Fetch and store the guild (the server) in which the message was send.
const guild = reaction.message.guild;

const memberWhoReacted = guild.members.find(member => member.id === user.id);

memberWhoReacted.addRole(role);

原文由 T. Dirks 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题