问题描述
几乎,我很难在用户的 Quick.db 清单中找到一个角色。我想这样做是为了:允许他们只购买一次角色;允许他们仅在 在他们的库存中找到拥有的角色时才装备它。问题是用户可以多次购买角色,并且即使角色没有被拥有也可以装备。我相信我遇到的问题是 if(db.has(message.author.id + '.items' + 'hot rod red'))
(可能是因为我正在搜索角色而不是纯文本项目?),但也可能是其他内容。
此时我完全迷失了想法,没有任何想法,感谢您的帮助!
装备角色的代码:
let user = message.guild.members.cache.get(message.author.id)
let items = await db.fetch(message.author.id);
if(items === null) items = "nothing"
let author = db.get(`items_${message.guild.id}_${user.id}`)
if (args[0] == 'red') {
let rejectEmbed = new discord.MessageEmbed()
.setDescription('You do not own this role!');
if(db.has(message.author.id + '.items' + '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!');
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 return message.channel.send(rejectEmbed)
}
购买命令代码:
let Embed = new discord.MessageEmbed()
.setColor("#FFFFFF")
.setDescription(`> :no_entry_sign: You need 20,000 credits to purchase ${message.guild.roles.cache.get('733373020491481219')}`);
if (message.member.roles.cache.some(role => role.name === "level 25") ||(message.member.roles.cache.some(role => role.name === "frequent flyers"))){
if (console.log(db.has(message.author.id,'hot rod red'))){
let EmbedError = new discord.MessageEmbed()
.setColor('#FFFFFF')
.setDescription(`:no_entry_sign: You already own ${message.guild.roles.cache.get('733373020491481219')} !`);
return message.channel.send(EmbedError)
}else
if (amount < 20000) return message.channel.send(Embed)
let Embed3 = new discord.MessageEmbed()
.setColor("#FFFFFF")
.setDescription(`:white_check_mark: You bought ${message.guild.roles.cache.get('733373020491481219')} for 20,000 credits!`);
message.channel.send(Embed3)
db.subtract(`money_${message.guild.id}_${user.id}`,20000)
db.push(message.author.id,`${message.guild.roles.cache.get('733373020491481219')}`);
db.fetch(`hot_rod_red${message.guild.id}_${user.id}`);
db.set(`hot_rod_red_${message.guild.id}_${user.id}`,true)
}else {return message.channel.send('You do not have the required level to buy this role!')}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)