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

Posted

技术标签:

【中文标题】Discord Bot如何为自动进入服务器的新用户赋予角色【英文标题】:Discord Bot how do I give a new user who enters the server a role automatically 【发布时间】:2021-06-14 03:33:12 【问题描述】:

我目前正在编写一个 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】:

您正在寻找guildMemberAdd 事件。

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

Learn about Intents Here

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

以下是DJv12

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!`);
);

【讨论】:

以上是关于Discord Bot如何为自动进入服务器的新用户赋予角色的主要内容,如果未能解决你的问题,请参考以下文章

如何向 discord.js bot v12 添加验证

我如何为 client = discord.Client() 使用 discordpy 冷却命令 [关闭]

如何为导入的库启用 PyCharm 自动完成功能 (Discord.py)

Discord bot 没有获得所有用户

discord.py - 如何为特定用户重置命令的冷却时间?

Python Discord Bot:如何与用户交互?