![](/img/trans.png)
[英]Trying to code discord bot to require certain role for specific commands
[英]Specific Role Commands for Discord Bot
我正在尝试为我的 Disc 机器人创建一个命令,并尝试使其与角色相关。
我查看了该站点上的其他问题,但它们都在 Python 而不是 JS 中; 在 discord.js 上,他们的例子与我想做的完全不同。 到目前为止一切都很好,只是当它到达这部分时(上面或下面没有任何东西)
if (message.member.roles.name == "Owner") {
return message.reply("You can use this command!")
}
if (message.member.roles.name != "Owner") {
return message.reply("Sorry, an error occurred.")
}
我希望能够看到“你可以使用这个命令!
问题是message.member.roles
不会是单个项目,它将是用户拥有的角色的集合,因此您需要搜索角色以检查用户是否具有角色。
您可以使用.find()
function 查看用户是否具有角色。 It takes a function (in this case, a lambda function) that passes r
(being the role), and checks if r.name
is equal to your role (in this case, Owner)
if(message.member.roles.find(r => r.name === "Owner")){
return message.reply("You can use this command!")
} else {
return message.reply("Sorry, an error occurred.")
}
另一种选择是,您可以通过他们的 ID 获取角色(因为他们可能不会定期更改),然后检查用户是否具有该角色。
let ownerRole = message.guild.roles.get('123456789'); let moderatorRole = message.guild.roles.get('123456789'); if(msg.member.roles.has(ownerRole.id)) { // the user has the role } else { // the user doesn't have the role. }
我认为你应该这样写。 它可以防止许多错误,例如“message.member.roles.name is not a function”
这是我的代码:
client.on('message', message => {
const roleName = message.member.roles.cache.find(r => r.name === "Owner")
if (roleName) {
return message.reply("You can use this command.")
} else {
return message.reply("Sorry, an error occured.")
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.