问题
I wanna make my bot give automatically role when my friends join for first time to my server: I have tried this one my VPS node version: 12.19.0v:?
client.on('guildMemberAdd', member => {
console.log('User @' + member.user.tag + ' has joined the server!');
var role = member.guild.roles.cache.find(role => role.name == "Newbie")
let user = member.user
user.roles.add(role);
});
but nothing is working ! help me pls
回答1:
Discord is now enforcing privileged intents. The GUILD_MEMBERS
intent is required to receive events such as guildMemberAdd
and guildMemberUpdate
.
To learn how intents work and how to use them, check out discord.js' detailed guide.
Also, as stated in the comments, you need to use message.member
instead of message.user
回答2:
You need to know the difference between Members and Users. A user represents a Discord account, a member represents a user being in a server. So for example to get someone's tag, you need to do user.tag
, member.tag
wouldn't work. It's the same with nicknames, user.displayName
woudln't work, because a user is an account, a member is a user in a server. You'd do member.displayName
instead.
Anyway, where you put
let user = member.user
user.roles.add(role);
it should be replaced with
member.roles.add(role);
and that should hopefully solve your problem.
来源:https://stackoverflow.com/questions/64556167/make-an-autorole-for-discord-js-v12