使用 Quick.db (Discord.js) 的自动角色问题
Posted
技术标签:
【中文标题】使用 Quick.db (Discord.js) 的自动角色问题【英文标题】:Issues with autorole using Quick.db (Discord.js) 【发布时间】:2021-06-21 19:11:20 【问题描述】:我正在尝试使用 quick.db 制作自动角色代码,但它返回错误:UnhandledPromiseRejectionWarning:TypeError [INVALID_TYPE]: Supplied roles is not a Role, Snowflake or Array or Collection of Roles or Snowflakes
我的“设置角色”命令:
const role = message.mentions.roles.first() || message.guild.roles.cache.get(args[0])
if(!role) return message.channel.send('I couldnt find the role')
db.set(`autorole`, role)
message.channel.send('The process worked fine!')
这是机器人的索引:
client.on("guildMemberAdd", (member) =>
let few = db.get(`autorole_$member.guild.id`)
if(few === null) return;
member.roles.add(few)
)
好吧,我不知道如何解决这个错误,我需要一点帮助
【问题讨论】:
【参考方案1】:最好将角色ID保存在数据库中
顺便说一句,你做错了。它应该类似于setautorole.js
const role = message.mentions.roles.first() || message.guild.roles.cache.get(args[0]);
if(!role)
return( message.channel.send('I couldnt find the role') );
db.set(`autorole_$message.guild.id`, role.id);
message.channel.send('The process worked fine!');
index.js
client.on("guildMemberAdd", (member) =>
let roleID = db.get(`autorole_$member.guild.id`)
if(!roleID) return;
role = member.guild.roles.find(roleID);
if(!role)
console.log("That role dosen't exist");
return (false);
member.roles.add(role)
)
【讨论】:
【参考方案2】:感谢 Akio 的想法,但是,我做了类似的事情:
client.on("guildMemberAdd", (member) =>
let roleID = db.get(`autorole_$member.guild.id`)
if(!roleID) return;
let role = member.guild.roles.cache.find(r => r.id === roleID);
if(!role)
console.log("That role dosen't exist");
return (false);
member.roles.add(role)
)
成功了,谢谢你的帮助:)
【讨论】:
以上是关于使用 Quick.db (Discord.js) 的自动角色问题的主要内容,如果未能解决你的问题,请参考以下文章
排行榜命令中未定义的用户名 [ quick.db / discord.js ]
Discord.js 错误:它正在删除整个数组。 Quick.db 和 discord.js