显示嵌入中的服务器机器人数量 |不和谐.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的主要内容,如果未能解决你的问题,请参考以下文章