You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:21:01