显示嵌入中的服务器机器人数量 |不和谐.js

Posted

技术标签:

【中文标题】显示嵌入中的服务器机器人数量 |不和谐.js【英文标题】:Show how many servers bot is in an embed | Discord.js 【发布时间】:2021-01-13 06:56:41 【问题描述】:

我的机器人在 20 多台服务器中,我希望能够向用户显示我的机器人所在的服务器。我可以自己完成此操作,但我希望将服务器列表放在一个嵌入中,如果它通过嵌入字符限制为嵌入的第 2 页。

代码:

    if (message.content === 'zservers')
        bot.guilds.cache.forEach((guild) => 
            const serverlist = new Discord.MessageEmbed()
            .setTitle(`???????????????????????????? ???????????????????????? ???????? ????????.`)
            .addField(guild)
            .setFooter(`Invite lovell <$`)
            message.channel.send(serverlist)
        )
    

结果:

我希望能够在单个嵌入中列出所有服务器!

【问题讨论】:

也许这会有所帮助 - discordjs.guide/popular-topics/embeds.html#embed-limits。如果您不想全部了解,总的要点是,您可以在一个嵌入中包含多达 25 个字段,每条消息可以包含 1 个嵌入。因此,您可以相应地制作字段和消息。 我不会这样做,因为您可能会因为发送太多消息而快速获得速率限制 这就是为什么我只希望它在一个嵌入中! 【参考方案1】:

工作?

编辑:更新! 现在应该可以工作了。

if (message.content === 'zservers')
    let guilds = bot.guilds.cache.array().join('\n')

    const serverlist = new Discord.MessageEmbed()
      .setTitle(`??????? ?????? ?? ??.`)
      .setDescription(guilds)
      .setFooter(`Invite lovell <$`)

    message.channel.send(serverlist)

编辑 2:类似的问题和完全正确的答案 -> https://***.com/a/60693028/7090121

【讨论】:

它说“.join() 不是一个函数”,所以我想把 .array() 函数代替,它起作用了。非常感谢您的贡献。 感谢提供信息。我更新了我的代码。但看起来你找到了答案。无论如何,您应该检查我给您的链接。还有分页系统。【参考方案2】:

这应该可以工作

if (message.content === 'zservers')
        let serverlist = ''
        bot.guilds.cache.forEach((guild) => 
            serverlist = serverlist.concat(" - " + guild.name + ": ID: " + guild.id + "\n")
        )
    
        const embed = new MessageEmbed()
        .setColor("RANDOM")
        .setTitle("Servers that have Naruse Jun Bot", '')
        .setDescription(serverlist)
        message.channel.send(embed);


【讨论】:

这也很完美,我想要它。谢谢【参考方案3】:

制作一个通用字符串,然后将公会附加到该字符串。

    if (message.content === 'zservers')
        let guilds = '';
        bot.guilds.cache.forEach((guild) => 
            guilds = guilds.concat(guild).concat("\n"); // concatenate the guild and add a new line in the end.
        )
        const serverlist = new Discord.MessageEmbed()
        .setTitle(`??????? ?????? ?? ??.`)
        .addField(guilds) // use the general 'guilds' string.
        .setFooter(`Invite lovell <$`)
        message.channel.send(serverlist)
    

【讨论】:

它给了我这个错误:(node:11896) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body embed.fields[0].name: Must be 256 or fewer in length. 我认为这是因为太多了。我不太确定如何解决这个问题。我对此很陌生。 你可以使用Util#splitMessage 也可以不使用concat(),而是使用map()

以上是关于显示嵌入中的服务器机器人数量 |不和谐.js的主要内容,如果未能解决你的问题,请参考以下文章

运行不和谐机器人(JS)时的错误代码

不和谐.js | guild.iconURL 在嵌入中不起作用

无法在嵌入中显示本地图像?不和谐.js

嵌入音乐机器人不工作/discord.js

如何检查字符串是不是包含在数组中?不和谐.js

发送嵌入后删除触发器 |不和谐.js