discord.js 事件处理程序欢迎消息

问题描述 投票:0回答:2

所以我为我的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)
        
    })

    }
}

我没有收到任何错误,但每当有人加入服务器时,他/她都不会获得该角色,并且不会出现欢迎消息。我将欢迎消息代码放在事件处理程序正在处理的事件文件夹中。有人可以帮忙吗?

node.js discord discord.js bots
2个回答
1
投票

问题出在欢迎代码中。

在处理程序代码中,您有以下行:

client.on(event.name, (...args) => event.execute(...args, Discord, client));

这会触发客户端在欢迎代码中设置的名称属性。

您当前将其设置为

welcome
,这不是有效的事件。 机器人现在正在监听欢迎事件,但这永远不会发生。

第一个步骤是将 name 属性设置为

guildMemberAdd
,如下所示:

module.exports =  {
    name: 'guildMemberAdd',
//the rest of the code

那么你还有另一个问题。 在欢迎代码中,您会看到

client.on()
再次

这永远不会起作用,除非有一些非常幸运的机会,两个人在一毫秒内加入,但即使这样,你也只会收到 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)

    }
}

编码快乐!


0
投票

模块.导出= { name: '公会成员添加', 异步执行(成员){ constwelcomeRole=awaitmember.guild.roles.cache.find(role=>role.name==='ThànhViên'); 等待member.roles.add(welcomeRole);

const welcomeChannel = await member.guild.channels.cache.find(channel => channel.name === 'welcome');
await welcomeChannel.fetch();
welcomeChannel.send(`Chào mừng ${member.user} đến với BRB Studio! Bạn là thành viên thứ ${member.guild.memberCount}, trước khi tham  gia server hãy đọc  ${member.guild.channels.cache.get('').toString()}. Một cuộc chiến tàn khốc đang chờ đón bạn`);
                    }
              }

//////////////////////////////// .setThumbnail() .setImage()welcomeChannel.send(file = discord.File (“12.png”))

đây là mã lệnh của tôi,ai đó có thể giúp tôi thêm hình ảnh vào cùng lời chào không?,lời chào khi có thành viên mới tham gia đã hoạt động nhưng hình ảnh không có :(

© www.soinside.com 2019 - 2024. All rights reserved.