Discord Bot 如何为自动进入服务器的新用户提供角色

时间:2021-03-16 19:32:40

标签: node.js discord discord.js

我目前正在编写一个 Discord 机器人,它可以检测新成员何时进入服务器并自动为他们分配“访客”角色。我发现的 add user to role with newest discord.js 。只有我的问题是我用哪种方法包装它? 那么我如何编写以下内容作为正确的代码?

bot.on('new Member joint this server', role => {
   get the name of the member. give the role ('Guest')
})

我的代码

const Discord = require('discord.js');
const bot = new Discord.Client();

const token = 'token';

bot.on('ready', () => {
    console.log('Bot is online')
});


// This happens only when someone writes, but is there also something like this when someone enters the             
// server for the first time?
// Discord Bot how do I give a new user who enters the server a role automatically

bot.on('message', msg => {
    if(msg.content === "Test") {
        msg.reply("Test back");
    }
})


var role = message.guild.roles.find(role => role.name === "guest");
message.member.addRole(role);


bot.login(token);

1 个答案:

答案 0 :(得分:0)

您正在寻找 guildMemberAdd 事件。

您需要在 Discord 开发者门户上为此活动启用公会会员意图。

Learn about Intents Here

但是事件中传递的对象是加入的成员,而不是角色。您必须定义要在函数中添加的角色。

以下是DJS v12

bot.on('guildMemberAdd', guildMember => {
   const role = guildMember.guild.roles.cache.find(r => r.name === 'guest');
   guildMember.roles.add(role).catch(console.error);

   console.log(`${guildMember.displayName} Has Joined The Server!`);
});