首页 > 解决方案 > 使用 discord.js 在第一个频道发送消息

问题描述

我见过很多机器人在加入时都会收到问候消息。它通常发送到服务器的第一个通道。

例如:

bot加入公会

博特:嘿!谢谢你邀请我!

我现在拥有的代码非常简单:

client.on("guildCreate", guild => {
    the code goes here
});

我不知道如何将消息发送到随机(第一个)频道。如果有人能告诉我其他机器人是如何做到的,我会非常感激。

标签: javascriptdiscorddiscord.js

解决方案


编辑:截至 2020 年 9 月 27 日,使用 Discord.js 版本 12.3.1,我只需要添加一个引用即可cache获得正确的频道并确保迭代正确进行。

我使用的是 Discord.js 版本 11.4.2,并且能够使用以下代码向 #general 频道发送默认消息。用您的名字替换bot下面的内容。client

const Discord = require('discord.js');
const bot = new Discord.Client();

bot.on("guildCreate", guild => {
    let channelID;
    let channels = guild.channels.cache;

    channelLoop:
    for (let key in channels) {
        let c = channels[key];
        if (c[1].type === "text") {
            channelID = c[0];
            break channelLoop;
        }
    }

    let channel = guild.channels.cache.get(guild.systemChannelID || channelID);
    channel.send(`Thanks for inviting me into this server!`);
});

编辑:我发现guild.systemChannelID可以,null所以我更新了代码以搜索第一个文本通道并将其用于初始消息。


推荐阅读