node.js - 检查添加反应的用户是否有角色
问题描述
我想检查对消息做出反应的用户是否有角色,这样如果用户没有等级,机器人将忽略命令的其余部分,但我不知道如何。
示例:如果具有管理员级别的用户对 :eggsa: 表情符号做出反应,机器人将继续执行该命令,但如果我只有会员级别,机器人将忽略我。
client.on('messageReactionAdd', reaction => {
const eggsa = client.emojis.find(emoji => emoji.name === "eggsa");
if (reaction.emoji.name === 'eggsa') {
const message = reaction.message;
const kanal = reaction.message.guild.channels.find('name', 'sitater');
var embed = new Discord.RichEmbed()
.setAuthor(reaction.message.content)
.setTimestamp()
.setFooter(reaction.message.author.username, reaction.message.author.avatarURL)
kanal.send({embed});
}
});
代码在这个阶段有效,只有每个人都可以使用它
如果有人可以帮助我,我将不胜感激> :)
解决方案
如果您查看messageReactionAdd 文档,您可以看到与反应一起,您还可以获得添加反应的用户。所以而不是
client.on('messageReactionAdd', reaction => {
你会有
client.on('messageReactionAdd', (reaction, user) => {
那么你就有了用户,它的类型是User。因为user
不是 GuildMember 类型,所以您首先需要获取正确的 Guild 成员,然后才能检查他/她的角色。
最简单的方法是获取添加了反应的消息const msg = reaction.message;
。然后你可以从消息中获取公会const guild = msg.guild;
。现在您可以使用const guildMembers = guild.members;
. 最后,您需要找到正确的成员const guildMember = guildMembers.get(user.id);
。
现在您有了公会成员,您可以访问他/她的角色,从而检查他/她是否具有特定角色
推荐阅读
- javascript - 如何使用节点 js 将直播发送到 YouTube
- java - 防止java积极保留ram
- android - 当回调未完成时,Android Kotlin 应用程序在离开从 API 接收回调的片段后崩溃
- npm - 在 npm 中禁用 reify
- node.js - 当我在 Postman 上使用 multipart/form-data 发布请求时得到一个空对象
- html - 元素不知道什么原因粘住了?
- java - 创建自定义视图而不在 xml 中设置布局大小
- json - JSON HAL - 为链接指定不同的格式
- react-native - 如何在本机反应中更改底部选项卡导航器样式
- authentication - ASP.NET Core:Cookie 未经过身份验证。失败消息:取消保护票证失败