【问题标题】:How do I get all the bot acounts in a guild?我如何获得公会中的所有机器人帐户?
【发布时间】:2020-06-15 19:28:09
【问题描述】:

我现在正在使用 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() 。不过,我不知道您如何获得服务器中所有机器人的名称。当我搜索到这个时,我只知道如何制作一个基本的不和谐机器人,而对此一无所知。

请不要只发送链接。请完整回复。

【问题讨论】:

    标签: node.js discord.js


    【解决方案1】:

    公会有一个名为“members”的属性,它是一个集合,包含公会中的所有成员。 (包括机器人)。 你可以这样做:

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

    这会从集合中创建一个由公会成员标签映射的数组。 (标签#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...
    

    【讨论】:

    • 有道理。我会用这个。很高兴知道
    猜你喜欢
    • 2020-10-16
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 2021-11-01
    • 2021-04-01
    • 2020-09-10
    相关资源
    最近更新 更多