【发布时间】:2021-10-06 20:56:14
【问题描述】:
所以我正在使用 discord.js 及其突击队框架开发一个不和谐机器人。
我将一些信息存储在 mongodb 数据库中,例如服务器前缀或角色,以便运行某些命令。
突击队框架有一个名为
的函数hasPermission(message) {
...
}
这需要一个值返回 true 或 false,如果为 true,则命令运行,如果 false 命令不运行并在不和谐中吐出错误。
我需要检查用户是否有一个或多个特定角色才能使用某个命令(审核)
这里是代码
async hasPermission(message) {
const perm = await roleList.find({Guild_id: message.guild.id})
console.log(perm[0].Roles)
return (message.member.roles.cache.some(role => perm[0].Roles.includes(role.name)))
}
现在,让它异步只会破坏它的功能,并且总是会返回 true。
所以我尝试使用这样的承诺
hasPermission(message){
roleList.find({Guild_id: message.guild.id}).then(roles => {
console.log(roles[0].Roles)
const b= (message.member.roles.cache.some(role => roles[0].Roles.includes(role.name)))
console.log("Has permission?", b)
return b
})
}
这在 .then() 中返回 true,但没有通过并返回 false(这是默认值)
数据库调用正常,比较应该返回true,应该返回false,只是函数hasPermission()没有运行。
我需要在他们运行命令之前从数据库中检查他们的角色,并且没有内置的“角色”检查,我对他们的不和谐支持服务器没有运气。任何建议。
【问题讨论】:
标签: javascript node.js mongodb discord.js commando