我如何在公会中获取所有机器人帐户?

时间:2020-06-15 11:16:48

标签: node.js discord.js

我现在正在使用Heroku。这就是为什么您看到process.env.token3。

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


const mark2 = '*info personal'
const mark3 = '*info guild'
bot3.on('message', msg =>{

    if (msg.content.startsWith(mark2)){
        const hashitag = msg.author.id
        const actualhashitag = msg.author.discriminator
        const evenbetterhashitag = "#" + actualhashitag 
        const personalembed = new Discord.MessageEmbed()
            .setTitle('Stuff about you')
            .setImage(msg.author.displayAvatarURL())
            .setColor('#D11111')
            .addField('Your username',  msg.author.username)
            .addField('Your hashtag', hashitag, true)
            .addField('Your actual hashtag', actualhashitag, true)
            .addField('Your even realer hashtag', evenbetterhashitag, true)   
            .addField('Your amount of friends', 'Discord bots can not know that sadly')
            .addField('Your role', msg.member.roles.cache.map(role => role.name).join(", ") )
            .addField('Your role id', msg.member.roles.cache.map(role => role.id).join(", ") )
            .addField('Your nickname', msg.member.nickname);
        msg.channel.send(personalembed)
    }
    if (msg.content.startsWith(mark3)){
        let roleID = "720575834771161109";
        const guildembed = new Discord.MessageEmbed()
            .setTitle(msg.guild.name)
            .setImage(msg.guild.iconURL())
            .setColor('#97FF00')
            .addField('the id of the server', msg.guild.id)
            .addField('the owner', msg.guild.owner.user.username)
            .addField('the owner id', msg.guild.ownerID)
            .addField('the owner nickname', msg.guild.owner.nickname)
            .addField('all roles', msg.guild.roles.cache.map(role => role.name).join(", ") ) 
            .addField('the bots', msg.guild.roles.cache.get(roleID).members.map(things => things).join(','))
            .addField('bot 1','Say hello, goodbye and bye in different ways and get different responses')
            .addField('bot 2','Say *interesting with something after it. it will give you a bit of a response')
            .addField('bot 3', 'say *info personal or *info guild to get some imformation. You are using *info guild now')
        msg.channel.send(guildembed)

    }  


})

bot3.login(process.env.token3)

这是我现在拥有的脚本。它可以工作,但我也想将服务器中的所有机器人添加到addField()中。我不知道您如何获得服务器中所有机器人的名称。当我进行搜索时,我只知道如何制作一个基本的不和谐机器人,对此一无所知。

请不要仅发送链接。请提供完整的遮篷。

1 个答案:

答案 0 :(得分:1)

公会有一个称为“成员”的属性,该属性是一个Collection,包含公会中的所有成员。 (包括机器人)。 您可以这样做:

message.guild.members.cache.map(member => member.user.tag);

这将从公会成员的标签映射的Collection中创建一个数组。 (标记#0000) 如果只想包含漫游器帐户,则可以使用Collection.filter()函数。

message.guild.members.cache.filter(member => member.user.bot)

这段代码将选择公会中的所有机器人。现在,您要做的就是通过他们的标签进行映射。

    message.guild.members.cache.filter(member => member.user.bot).map(member => member.user.tag)

然后使用.join()函数将其转换为字符串。

    message.guild.members.cache.filter(member => member.user.bot).map(member => member.user.tag).join(", ")
   //Result: Dyno#3861, Dank Member#5192 etc...