【问题标题】:Send welcome message in a random channel when invited to guild被邀请加入公会时在随机频道中发送欢迎消息
【发布时间】:2021-04-08 08:44:48
【问题描述】:

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

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

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

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

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

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

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

    实现这一点的代码是

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 2020-12-25
    • 2021-11-13
    • 2021-08-17
    • 2020-09-10
    • 2021-02-22
    相关资源
    最近更新 更多