Discord.js Level Roles?
//level system
bot.on('message', function(message){
if(message.author.bot) return;
var addXP = Math.floor(Math.random() * 5) + 1;
if(!xpfile[message.author.id]){
xpfile[message.author.id] = {
xp: 0,
level: 0,
reqxp: 100
}
fs.writeFile("./xp.json",JSON.stringify(xpfile),function(err){
if(err) console.log(err)
})
}
xpfile[message.author.id].xp += addXP
if(xpfile[message.author.id].xp > xpfile[message.author.id].reqxp){
xpfile[message.author.id].xp -= xpfile[message.author.id].reqxp
xpfile[message.author.id].reqxp *=1.5
xpfile[message.author.id].reqxp = Math.floor(xpfile[message.author.id].reqxp)
xpfile[message.author.id].level += 1
message.reply("ist auf Level **"+ xpfile[message.author.id].level +"** aufgestiegen.")
}
fs.writeFile("./xp.json",JSON.stringify(xpfile),function(err){
if(err) console.log(err)
//level roles
var role = message.guild.roles.cache.find(role => role.name === "test");
if(xpfile[message.author.id].level == 1)message.member.guild.roles.add(role);
//rank command
if(message.content.startsWith("fg!rank")){
let user = message.mentions.users.first() || message.author
if(!xpfile[user.id]) return message.channel.send("Dieser User hat noch keine XP gefarmt.")
const rank = new Discord.MessageEmbed()
.setTitle("**RANK**")
.setColor("GREEN")
.setAuthor(user.tag,user.avatarURL({dynamic:true}))
.addField("Level: ",xpfile[user.id].level)
.addField("XP: ",xpfile[user.id].xp +"/"+ xpfile[user.id].reqxp)
message.channel.send(rank)
}
})
})
Hey, ich habe ein LevelSystem in Discord.js gecodet.
Es funktioniert sehr gut, aber bei den LevelRoles gibt es ein Problem.
Es kommt kein Error oder sonstiges, aber der Bot vergibt die Role nicht. Weiß jemand woran das liegt?
2 Antworten
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer, Discord
role.name === "test"
Wird überhaupt eine Rolle gefunden? " ===" könnte es ggf. aussortieren. Würde stattdessen "==" benutzen.
Woher ich das weiß:eigene Erfahrung – 🤖 Botentwickler auf Discord
Versuche mal das nur mit deiner ID:
let role = guild.roles.cache.find(r => r.name === 'ADMIN') || await guild.roles.fetch('ROLEID');
Vielleicht ist die Role einfach nicht im cache drin und du musst es dafür fetchen..