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

如何查看机器人当前已加入语音频道的成员规模?如何将语音频道当前连接人数集成至/info命令?

嘿,我来帮你搞定这个问题!其实获取机器人所在语音频道的成员数并整合到/info命令里很简单,咱们一步步来:

获取机器人当前已加入的语音频道成员规模

你之前尝试的client.voice.adapters是对的方向,但需要从里面拿到对应的语音频道对象才能获取成员数据。这里有个实用的代码片段:

// 遍历机器人所有的语音连接
client.voice.adapters.forEach((adapter, guildId) => {
  // 从连接实例中获取对应的语音频道
  const voiceChannel = adapter.channel;
  if (voiceChannel) {
    // 计算频道内的成员数(减去1是排除机器人自身,不需要的话可以去掉)
    const onlineMembers = voiceChannel.members.size - 1;
    console.log(`服务器 ${guildId} 的「${voiceChannel.name}」频道当前有 ${onlineMembers} 名成员`);
  }
});

这里的关键是voiceChannel.members——它是一个包含频道内所有成员的集合,直接用.size就能拿到总人数,再根据需求决定是否排除机器人自己。

将语音频道人数整合到/info命令中

假设你用的是Discord.js的Slash命令系统,下面是整合后的示例代码,直接就能用到你的项目里:

const { SlashCommandBuilder } = require('discord.js');

module.exports = {
  data: new SlashCommandBuilder()
    .setName('info')
    .setDescription('查看机器人的状态信息'),
  async execute(interaction) {
    // 获取当前服务器的语音连接实例
    const voiceConnection = client.voice.adapters.get(interaction.guildId);
    let voiceStatus = "🤷 目前未加入任何语音频道";

    if (voiceConnection) {
      const channel = voiceConnection.channel;
      const memberCount = channel.members.size - 1;
      voiceStatus = `🎤 当前在语音频道 **${channel.name}**,共有 ${memberCount} 名成员在线`;
    }

    // 给用户回复整合后的信息
    await interaction.reply({
      content: `### 🤖 机器人状态信息\n${voiceStatus}`,
      ephemeral: false
    });
  },
};

额外注意事项

  • 如果你用的是Discord.js v13或更早版本,client.voice.adapters要换成client.voice.connections,逻辑完全一致。
  • 确保机器人拥有ViewChannel权限,不然无法获取语音频道的成员数据。

内容的提问来源于stack exchange,提问作者Term

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 06:53:44