javascript - 即使用户不拥有角色,机器人也会为用户分配角色
问题描述
抱歉标题混乱,我会澄清一下。我正在尝试让机器人检查用户是否在他们的 quick.db 库存中具有特定角色,如果有,它将配备该角色。我遇到的问题是,即使在库存中使用角色,它也会返回角色不拥有的错误。我觉得问题出在这if (db.has(message.author.id + '.hot rod red'))
条线上,因为我不太确定如何使用 quick.db 格式化检查角色。很抱歉代码混乱,如果有人知道如何解决这个问题,请告诉我,谢谢!
if (db.has(message.author.id + '.hot rod red')) {
if (message.member.roles.cache.some(role => role.name === 'hot rod red')) {
let embed = new Discord.MessageEmbed().setDescription('You already have this role equipped!');
return message.channel.send(embed);
} else {
await message.guild.members.cache.get(user.id).roles.add('733373020491481219');
let embed = new Discord.MessageEmbed().setDescription(`You now have the ${message.guild.roles.cache.get('733373020491481219')} role!`);
message.channel.send(embed);
user.roles.remove(user.roles.highest);
}
} else {
let embed = new Discord.MessageEmbed().setDescription('You do not own this role!'); // ERROR HERE; GIVES ROLE EVEN WITHOUT OWNING
return message.channel.send(embed);
}
解决方案
可能尝试类似的
let check = db.get(message.author.id+'.hot rod red')
方法并检查它是否为真/假,我会说使用字符串而不是布尔值,因为你可以使用if(check === 'false/true'){}
. 你也可以做
if(!check || check === 'false'){ return
let embed = new Discord.MessageEmbed().setDescription('You do not own this role!');
return message.channel.send(embed);
}
所以最终的代码是:
let check = await db.get(message.author.id + '.hot rod red');
let rejectEmbed = new Discord.MessageEmbed()
.setDescription('You do not own this role!');
if(!check){
return message.channel.send(rejectEmbed)
}
if(check === 'true'){
if (message.member.roles.cache.some(role => role.name === 'hot rod red')) {
let embed = new Discord.MessageEmbed().setDescription('You already have this role!');
return message.channel.send(embed);
} else {
await message.guild.members.cache.get(user.id).roles.add('733373020491481219');
let embed = new Discord.MessageEmbed().setDescription(`You now have the ${message.guild.roles.cache.get('733373020491481219')} role!`);
message.channel.send(embed);
user.roles.remove(user.roles.highest); // I'm unsure why this is here, this could be causing a potential error
}
}
如果还有什么问题,欢迎评论!!我希望这有帮助。
推荐阅读
- javascript - 如何从javascript调用资源文件消息?
- python - BeautifulSoup 在结果中搜索
- javascript - 如何在 reactjs 中初始化 mesibo 控制台。适用于 Web 应用程序而不是 android 应用程序。在 reactJS 中不在 Reactnative 中
- salesforce - Salesforce 子到父关系查询为父对象返回 null
- python - Pandas 在一个函数中合并
- c - GLSL 计算着色器。如果写入 SSBO 的顺序发生变化,则输出会发生变化
- python - 视图没有在烧瓶中返回响应
- reactjs - 参考未定义在模态组件材料 ui 中
- r - 在图例ggplot2中反映线型
- javascript - Integrate Spark AR API into Node JS web app