每当机器人被邀请时,我希望它向服务器中的频道发送一条消息,类似于 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);
});
答案 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);
});