javascript - 如何才能确保只有在我的服务器中具有角色的人员才能使用该机器人?

标签 javascript discord discord.js

我希望我的机器人仅在我的服务器中具有角色时才运行命令。我的机器人位于许多服务器中,我希望该命令仅在它们在特定服务器中具有角色时才起作用。

我尝试了很多方法,例如:

let guildcheck = client.guilds.get('496780648351006720')

if (guildcheck.member.roles.has(role => role.name === 'Role')) {

message.channel.send("works")

}else{

message.channel.send("doesn't work")

}

我预计这会成功,所以如果我在“496780648351006720”中拥有“角色”,它会回复“作品”。

最佳答案

if (guildcheck.member.roles.has(role => role.name === '角色'))
由于公会成员数量众多,无法通过guildcheck.member直接获取公会成员;无论如何,代码都会对要获取哪个成员感到困惑。

您尝试使用的可能是 member(User)函数,而不是属性。按照文档,您需要为其提供一个用户作为参数,如下所示:

if (guildcheck.member(message.author).rol...)
这样,您就可以将消息的发送者作为公会成员获取。
(请注意,如果用户不在目标公会中,guildcheck.member(message.author) 将为 null。 )

或者...

你可以做message.member简单地将消息的发送者作为公会成员
如果消息不在公会中(或者用户不在服务器中),它只会返回 null/default。

唯一的问题是它现在允许公会中的任何用户使用您的命令。
您可以通过检查发送此消息的公会 ID 来避免这种情况,如下所示:

// Ignore if this is not the desired guild.
if (message.guild.id !== "Your desired guild ID") { return; }

if (message.member.roles.has(role => role.name === 'Role')) {
  message.channel.send("works");
}else{
  message.channel.send("doesn't work");
}

关于javascript - 如何才能确保只有在我的服务器中具有角色的人员才能使用该机器人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57740539/

相关文章:

javascript - 根据他的数值更改 td 元素的背景颜色

javascript - 尝试使用 Context API 时看到 "render is not a function"

javascript - 我如何让机器人忽略某些角色//Discord.js

reactjs - 让用户以编程方式加入不和谐服务器

javascript - Discord.js 发送文件

javascript - if 条件不会停止启用

javascript - window.location 不适用于使用 react 路由器 4 的 react 应用程序

javascript - 菜单要固定在滚动条的顶部

javascript - 我怎样才能用nodejs获得discord get membercount

python - 如何在discord.py(rewrite)中做出 channel 删除 react ?