受邀加入公会时在随机频道发送欢迎信息

时间:2021-01-01 15:02:33

标签: javascript node.js discord discord.js

每当机器人被邀请时,我希望它向服务器中的频道发送一条消息,类似于 Dank Memer 和 Members+ 曾经拥有的。但是,我不希望它选择一个频道名称,我希望它每次都选择一个随机频道。

bot.on("guildCreate", () => {
    const embed = new Discord.MessageEmbed()
        .setAuthor(bot.user.username, bot.user.avatarURL)
        .addField(`:wave: Welcome!`, `Thanks for adding Thickets to your server.`)
        .addField(`Getting Started`, `First of all, this bot is still under development and is getting frequent changes. We are looking for developers.`)
        .addField(`Use the command t.help to view all the commands!`)
        .setColor(0x00ff00)
        .setFooter(`Thanks for adding Thickets, I wish you luck!`);
    
    message.channel.send(embed);
});

1 个答案:

答案 0 :(得分:1)

第一部分是正确的,当您的机器人加入服务器时,您使用了 guildCreate 事件。

要获得随机频道,您必须获得您加入的公会<Client>.on("guildCreate", (guild)),然后您可以使用guild.channels 获得频道,这将使您进入w3schools

现在使用 discord.js 缓存的工作方式,您现在需要使用 guild.channels.cache 进入频道缓存,然后您将拥有一个集合。

为确保您只获取文本频道而不是语音、类别等。您可以对集合 .filter(x => x.type == 'text') 使用过滤器,它将返回一个新的过滤集合。

使用新的 GuildChannelManager,您可以使用 .random(1)Collection 返回 1 个随机结果。然后您将拥有一个 Collection

实现这一点的代码是

bot.on('guildCreate', (guild) => {
guild.channels.cache
    .filter(x => x.type == 'text')
    .random(1)[0]
    .send(embed);
});