Discord.js如何用数组实现获取机器人加入的所有服务器信息列表
Discord.js 服务器列表功能修改方案
问题根因
现有代码在遍历机器人加入的服务器时,每遍历到一个服务器就新建一个Embed单独发送,所以会出现N个服务器就输出N个独立卡片的情况,和预期的单卡片合并展示所有服务器信息的效果不符。
实现代码
通过数组提前收集所有服务器的信息,遍历完成后统一生成Embed发送即可:
const { MessageEmbed } = require('discord.js'); run: async (client, message, args) => { // 定义数组存储所有服务器的信息 const serverEntries = []; // 遍历所有服务器收集信息 client.guilds.cache.forEach((server, idx) => { serverEntries.push(`**${idx + 1}. ${server.name}** ID:\`${server.id}\` 成员数:${server.memberCount}`); }); // 统一生成单个Embed const serverListEmbed = new MessageEmbed() .setTitle('服务器列表') .setDescription(serverEntries.join('\n\n')) .setColor('#2ECC71'); // 仅发送一次消息 message.lineReply(serverListEmbed); }
补充说明
- 该实现利用Embed的description字段存储信息,单Embed的description最大支持4096字符,服务器数量过多时会超出限制导致发送失败,符合你提到的仅做学习用途的要求。
- 如果需要展示更多服务器,可以扩展为分页Embed的实现,你可以自行搜索相关开发资料学习。
内容的提问来源于stack exchange,提问作者BeGo
相关产品推荐
相关产品推荐

