通过事件处理器访问guildMember



我想询问如何通过事件处理程序访问guildMember。

这是我应该怎么写的(很多人也这么做了)…

client.on('guildMemberAdd', guildMember => {
let welcomeRole = guildMember.guild.roles.cache.find(role => role.name === 'Member');
guildMember.roles.add(welcomeRole);
guildMember.guild.channels.cache.get('TheChannelID').send(`Welcome, <@${guildMember.user.id}>, to our server! ... Check out the rules-cmd channel!`);
});

…但我有一个事件处理程序,如下所示…

//My event handler
const fs = require('fs');
module.exports = (client, Discord) =>{
const load_dir = (dirs) =>{
const event_files = fs.readdirSync(`./events/${dirs}`).filter(file => file.endsWith('.js'));

for (const file of event_files) {
const event = require(`../events/${dirs}/${file}`);
const event_name = file.split('.')[0];
client.on(event_name, event.bind(null, Discord, client));
}
}
['client', 'guild'].forEach(e => load_dir(e));
}

这里是我试图在一个单独的guildMemberAdd.js文件中重新创建这个的尝试,但似乎没有任何工作…

module.exports = (Discord, client, message) =>{
const guildMember = Discord.GuildMember;
let welcomeRole = guildMember.guild.roles.cache.find(role => role.name === 'Member');
guildMember.roles.add(welcomeRole);
guildMember.guild.channels.cache.get('TheChannelID').send(`Welcome, <@${guildMember.user.id}>, to our server! ... Check out the rules-cmd channel!`);
}

我已经绞尽脑汁思考这个问题好几个小时了,有人能帮帮我吗?哦,我的大部分代码都是从CodeLyon那里得到的。他是这样教我们的……

client.on('guildMemberAdd', guildMember => {
let welcomeRole = guildMember.guild.roles.cache.find(role => role.name === 'Member');
guildMember.roles.add(welcomeRole);
guildMember.guild.channels.cache.get('TheChannelID').send(`Welcome, <@${guildMember.user.id}>, to our server! ... Check out the rules-cmd channel!`);
});

…但是他在创建事件处理程序时并没有告诉我们怎么做。我修复了人们在评论中询问的成员计数器问题,但我似乎无法解决这个问题。

这里是CodeLyon的教程…https://www.youtube.com/playlist?list=PLbbLC0BLaGjpyzN1rg-gK4dUqbn8eJQq4

如果有人能帮助我,我将不胜感激!

您的尝试几乎工作,您的设置使参数按此顺序:(Discord, client, [parameters of the event here])

这意味着您需要更改

module.exports = (Discord, client, message) =>{

module.exports = (Discord, client, guildMember) =>{

作为你的信息"for guildMemberAdd事件目前是guildmember对象,因此为了避免混淆,更改它将使其工作

最新更新