提问者:小点点

当我的机器人被邀请到服务器时,我如何发送消息


所以基本上我想做的是,每当机器人被邀请时,它会发送一条消息到服务器中的一个通道,就像dank memer和members+以前有的一样,但是我不想有,所以如果通道被命名为general。我希望它是随机的。

  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个答案

匿名用户

如果第一部分是正确的,那么当您的bot加入服务器时,您将使用事件。

要获得一个随机通道,您必须获得您加入的公会,然后您可以使用获得通道,该通道将使您进入GuildChannelManager。

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

为了确保您只获得文本通道,而不是语音,类别等。您可以在集合x.type=='Text')/code>上使用filter,它将返回一个新的筛选集合。

对于新集合,您可以使用从集合中返回1个随机结果。然后你就会有一个GuildChannel。

完成这一任务的代码如下

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