所以我正在使用 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()
没有运行。
我需要在他们可以运行命令之前从数据库中检查他们的角色,并且没有内置的“角色”检查,我对他们的不和谐支持服务器没有运气。有什么建议么。