【问题标题】:Discord bot doesn't send welcome messages | JSDiscord bot 不发送欢迎消息 | JS
【发布时间】:2022-01-25 03:16:34
【问题描述】:

所以我被我的不和谐机器人的欢迎功能卡住了。

它不发送任何消息。

这里是welcome.js 文件的代码:

module.exports = (client) => {
    client.on("guildMemberAdd", (member) => {
        
        const welcomechannel = '934868156399386676';
        const ruleschannel = '934877916041457774';

        const embed = new Discord.MessageEmbed()
        .setTitle(`New member has arrived!`)
        .setDescription(`Welcome to the server <@${member.id}>! Enjoy your stay and make sure to check our rules ${member.guild.channels.cache.get(ruleschannel).ToString()}! :slight_smile:`)
        .setColor('#0ed42a')
        .setTimestamp()
        client.channels.cache.getwelcomechannel.send(embed)
    })

这里是 index.js 文件的代码:

onst { Client, Intents } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });

const config = require("./config.json");
const welcome = require("./welcome.js");

client.once('ready', () => {
    console.log("Your bot is online!");


    welcome(client);
});

client.login(config.token); 

【问题讨论】:

  • 您需要在您的客户意图中包含GUILD_MEMBERS,并在您的开发者门户中启用它以接收公会成员事件。下面的答案也解决了你的第二个问题

标签: javascript node.js discord discord.js


【解决方案1】:

问题出在 index.js 和welcome.js 中

首先,您不包括 GUILD_MEMBERS 作为 index.js 中的意图。

您在welcome.js 中的第二个问题。 getwelcomechannel 不是ChannelManager 的有效属性,所以正如@bedstorm 所说,您可以使用get() 函数并传入频道ID。您在welcome.js 中的代码应如下所示

module.exports = (client) => {
    client.on("guildMemberAdd", (member) => {

        const welcomechannel = '934868156399386676';
        const ruleschannel = '934877916041457774';

        const embed = new Discord.MessageEmbed()
            .setTitle(`New member has arrived!`)
            .setDescription(`Welcome to the server <@${member.id}>! Enjoy your stay and make sure to check our rules <#${ruleschannel}>! :slight_smile:`)
            .setColor('#0ed42a')
            .setTimestamp()
        client.channels.cache.get(welcomechannel).send(embed);
    })
}

然后只需将 GUILD_MEMBERS 意图添加到您的客户端

【讨论】:

    【解决方案2】:

    问题出在这一行:

    client.channels.cache.getwelcomechannel.send(embed)

    有两个问题,getwelcomechannel 不是函数,即使是函数,你也没有调用它。

    要解决此问题,您可以对频道集合使用.get() 方法。

    client.channels.cache.get(welcomechannel).send(embed)

    【讨论】:

    • 没有任何改变