Bot 不断在欢迎频道中发送垃圾邮件

时间:2021-07-12 16:14:02

标签: javascript node.js discord discord.js

我在 discord.js 中创建了一个带有欢迎信息的 Discord 机器人,但每当有人加入该机器人时,它就会不断发送垃圾邮件。

这是我的代码

client.on("guildMemberAdd", async (newMember) => {
    client.on("message", (msg) => {
        // IMPORTANT NOTE: Make Sure To Use async and rename bot to client or whatever name you have for your bot events!
        if (msg.author.bot) return;
        const welcomeChannel = newMember.guild.channels.cache.find((channel) => channel.name.includes("welcome"));
        welcomeChannel.send(`**${newMember.user.username}** had joined ${msg.guild.name}`);
    });
});

1 个答案:

答案 0 :(得分:3)

每当有人加入您的公会时,机器人都会为 message 事件创建一个侦听器。假设有 2 个人加入您的服务器;创建了 2 个 message 侦听器,当有人在任何频道中发送消息时,您的机器人将发送两次欢迎消息。每次有新成员加入时,这个数字都会增加。

您不应该在事件中监听事件。

在这种情况下,您根本不需要 message 事件,只需 guildMemberAdd


client.on('guildMemberAdd', member => {
    const welcomeChannel = member.guild.channels.cache.find(channel => channel.name.includes('welcome'));

    if (!welcomeChannel) return console.error('Welcome channel not found.');

    welcomeChannel.send(`**${member.user.tag}** had joined ${member.guild.name}`).catch(console.error);
});