discord.js 事件处理程序欢迎消息
discord.js event handler welcome message
所以我为我的 discord 机器人制作了一个事件处理程序,这样 index.js 文件就会很整洁。但是由于某种原因,每当有人加入服务器时我发出的欢迎消息不起作用。
这是我的事件处理程序代码:
const eventFiles = fs.readdirSync('./events').filter(file => file.endsWith('.js'));
for (const file of eventFiles) {
const event = require(`./events/${file}`);
if (event.once) {
client.once(event.name, (...args) => event.execute(...args, Discord, client));
} else {
client.on(event.name, (...args) => event.execute(...args, Discord, client));
}
}
这是我的欢迎消息代码:
module.exports = {
name: 'welcome',
once: false,
execute(Discord, client) {
const welcomechannelId = '753484351882133507' //Channel You Want to Send The Welcome Message
const targetChannelId = `846341557992292362` //Channel For Rules
client.on('guildMemberAdd', (member) => {
let welcomeRole = member.guild.roles.cache.find(role => role.name === 'Umay');
member.roles.add(welcomeRole);
const channel = member.guild.channels.cache.get(welcomechannelId)
const WelcomeEmbed = new Discord.MessageEmbed()
.setTitle(`Welcome To ${member.guild.name}`)
.setThumbnail(member.user.displayAvatarURL({dynamic: true, size: 512}))
.setDescription(`Hello <@${member.user.id}>, Welcome to **${member.guild.name}**. Thanks For Joining Our Server.
Please Read ${member.guild.channels.cache.get(targetChannelId).toString()}, and assign yourself some roles at <#846341532520153088>. You can chat in <#753484351882133507> and talk with other people.`)
// You Can Add More Fields If You Want
.setFooter(`Welcome ${member.user.username}#${member.user.discriminator}`,member.user.displayAvatarURL({dynamic: true, size: 512}))
.setColor('RANDOM')
member.guild.channels.cache.get(welcomechannelId).send(WelcomeEmbed)
})
}
}
我没有收到任何错误消息,但是每当有人加入服务器时,he/she 将不会获得该角色并且不会出现欢迎消息。我将欢迎消息代码放在事件处理程序正在处理的事件文件夹中。有人可以帮忙吗?
问题出在欢迎代码中。
在处理程序代码中有以下行:
client.on(event.name, (...args) => event.execute(...args, Discord, client));
这会在欢迎代码中设置的名称 属性 上触发客户端。
您当前将其设置为 welcome
,这不是有效的事件。
机器人现在正在监听一个永远不会发生的欢迎事件。
第一步是将名称 属性 设置为 guildMemberAdd
,如下所示:
module.exports = {
name: 'guildMemberAdd',
//the rest of the code
那你还有一个问题。
在欢迎代码中,您再次 client.on()
。
这永远行不通,除非非常幸运地有 2 个人在一毫秒内加入,但即便如此,您也只会收到 1 条欢迎消息。
删除以下内容:
client.on('guildMemberAdd', (member) => {
//code
})
将解决该问题。
那么最后要做的就是正确导入成员值。
我们通过更改以下行来做到这一点:
execute(Discord, client) {
至:
execute(member, Discord, client) {
//code
生成的代码如下所示:
module.exports = {
name: 'guildMemberAdd',
once: false,
execute(member, Discord, client) {
const welcomechannelId = '753484351882133507' //Channel You Want to Send The Welcome Message
const targetChannelId = `846341557992292362` //Channel For Rules
let welcomeRole = member.guild.roles.cache.find(role => role.name === 'Umay');
member.roles.add(welcomeRole);
const channel = member.guild.channels.cache.get(welcomechannelId)
const WelcomeEmbed = new Discord.MessageEmbed()
.setTitle(`Welcome To ${member.guild.name}`)
.setThumbnail(member.user.displayAvatarURL({dynamic: true, size: 512}))
.setDescription(`Hello <@${member.user.id}>, Welcome to **${member.guild.name}**. Thanks For Joining Our Server.
Please Read ${member.guild.channels.cache.get(targetChannelId).toString()}, and assign yourself some roles at <#846341532520153088>. You can chat in <#753484351882133507> and talk with other people.`)
// You Can Add More Fields If You Want
.setFooter(`Welcome ${member.user.username}#${member.user.discriminator}`,member.user.displayAvatarURL({dynamic: true, size: 512}))
.setColor('RANDOM')
member.guild.channels.cache.get(welcomechannelId).send(WelcomeEmbed)
}
}
编码愉快!
所以我为我的 discord 机器人制作了一个事件处理程序,这样 index.js 文件就会很整洁。但是由于某种原因,每当有人加入服务器时我发出的欢迎消息不起作用。
这是我的事件处理程序代码:
const eventFiles = fs.readdirSync('./events').filter(file => file.endsWith('.js'));
for (const file of eventFiles) {
const event = require(`./events/${file}`);
if (event.once) {
client.once(event.name, (...args) => event.execute(...args, Discord, client));
} else {
client.on(event.name, (...args) => event.execute(...args, Discord, client));
}
}
这是我的欢迎消息代码:
module.exports = {
name: 'welcome',
once: false,
execute(Discord, client) {
const welcomechannelId = '753484351882133507' //Channel You Want to Send The Welcome Message
const targetChannelId = `846341557992292362` //Channel For Rules
client.on('guildMemberAdd', (member) => {
let welcomeRole = member.guild.roles.cache.find(role => role.name === 'Umay');
member.roles.add(welcomeRole);
const channel = member.guild.channels.cache.get(welcomechannelId)
const WelcomeEmbed = new Discord.MessageEmbed()
.setTitle(`Welcome To ${member.guild.name}`)
.setThumbnail(member.user.displayAvatarURL({dynamic: true, size: 512}))
.setDescription(`Hello <@${member.user.id}>, Welcome to **${member.guild.name}**. Thanks For Joining Our Server.
Please Read ${member.guild.channels.cache.get(targetChannelId).toString()}, and assign yourself some roles at <#846341532520153088>. You can chat in <#753484351882133507> and talk with other people.`)
// You Can Add More Fields If You Want
.setFooter(`Welcome ${member.user.username}#${member.user.discriminator}`,member.user.displayAvatarURL({dynamic: true, size: 512}))
.setColor('RANDOM')
member.guild.channels.cache.get(welcomechannelId).send(WelcomeEmbed)
})
}
}
我没有收到任何错误消息,但是每当有人加入服务器时,he/she 将不会获得该角色并且不会出现欢迎消息。我将欢迎消息代码放在事件处理程序正在处理的事件文件夹中。有人可以帮忙吗?
问题出在欢迎代码中。
在处理程序代码中有以下行:
client.on(event.name, (...args) => event.execute(...args, Discord, client));
这会在欢迎代码中设置的名称 属性 上触发客户端。
您当前将其设置为 welcome
,这不是有效的事件。
机器人现在正在监听一个永远不会发生的欢迎事件。
第一步是将名称 属性 设置为 guildMemberAdd
,如下所示:
module.exports = {
name: 'guildMemberAdd',
//the rest of the code
那你还有一个问题。
在欢迎代码中,您再次 client.on()
。
这永远行不通,除非非常幸运地有 2 个人在一毫秒内加入,但即便如此,您也只会收到 1 条欢迎消息。
删除以下内容:
client.on('guildMemberAdd', (member) => {
//code
})
将解决该问题。
那么最后要做的就是正确导入成员值。 我们通过更改以下行来做到这一点:
execute(Discord, client) {
至:
execute(member, Discord, client) {
//code
生成的代码如下所示:
module.exports = {
name: 'guildMemberAdd',
once: false,
execute(member, Discord, client) {
const welcomechannelId = '753484351882133507' //Channel You Want to Send The Welcome Message
const targetChannelId = `846341557992292362` //Channel For Rules
let welcomeRole = member.guild.roles.cache.find(role => role.name === 'Umay');
member.roles.add(welcomeRole);
const channel = member.guild.channels.cache.get(welcomechannelId)
const WelcomeEmbed = new Discord.MessageEmbed()
.setTitle(`Welcome To ${member.guild.name}`)
.setThumbnail(member.user.displayAvatarURL({dynamic: true, size: 512}))
.setDescription(`Hello <@${member.user.id}>, Welcome to **${member.guild.name}**. Thanks For Joining Our Server.
Please Read ${member.guild.channels.cache.get(targetChannelId).toString()}, and assign yourself some roles at <#846341532520153088>. You can chat in <#753484351882133507> and talk with other people.`)
// You Can Add More Fields If You Want
.setFooter(`Welcome ${member.user.username}#${member.user.discriminator}`,member.user.displayAvatarURL({dynamic: true, size: 512}))
.setColor('RANDOM')
member.guild.channels.cache.get(welcomechannelId).send(WelcomeEmbed)
}
}
编码愉快!