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

如何用discord.js获取有权限的频道ID并保存至TXT文件

解决Discord所有服务器可发消息频道ID导出问题

原代码的问题

  • 仅指定单个服务器(DISCORD_SERVER_ID未定义且不符合需求),未遍历所有已加入服务器
  • 未过滤频道类型,非文本频道(如语音、分类频道)检查权限会出错
  • 权限判断逻辑未针对性处理文本频道

修正后的代码

const Discord = require('discord.js');
const fs = require('fs');

// 注意:如果使用discord.js v14+,需要改用Client并导入GatewayIntentBits
const client = new Discord.Client({ intents: [Discord.Intents.FLAGS.GUILDS, Discord.Intents.FLAGS.GUILD_MESSAGES] });

client.on('ready', () => {
  console.log(`已登录为 ${client.user.tag}`);
  getChannelIds();
});

async function getChannelIds() {
  let channelData = '';

  // 遍历所有已加入的服务器
  client.guilds.cache.forEach(guild => {
    // 过滤出服务器内的文本频道
    const textChannels = guild.channels.cache.filter(channel => channel.type === 'GUILD_TEXT');
    
    textChannels.forEach(channel => {
      // 检查当前机器人账号是否有发送消息权限
      if (channel.permissionsFor(client.user).has('SEND_MESSAGES')) {
        channelData += `服务器:${guild.name}\n`;
        channelData += `- 频道ID:${channel.id}\n`;
        channelData += `- 频道名称:${channel.name}\n\n`;
      }
    });
  });

  // 写入文件
  fs.writeFile('channel_ids.txt', channelData, (err) => {
    if (err) {
      console.error('写入文件失败:', err);
    } else {
      console.log('频道ID已保存到 channel_ids.txt');
    }
    client.destroy();
  });
}

// 填入你的机器人Token
client.login('你的机器人Token');

关键修改说明

  • 遍历所有服务器:替换单个服务器获取逻辑,改用client.guilds.cache.forEach遍历全部已加入服务器
  • 过滤文本频道:通过channel.type === 'GUILD_TEXT'筛选仅文本频道,避免非文本频道权限检查报错
  • 完善输出信息:增加服务器名称和频道名称,便于后续识别
  • 权限校验:确保机器人在该文本频道拥有SEND_MESSAGES权限

注意事项

  • 确保机器人Token拥有GUILDS和GUILD_MESSAGES意图权限(在Discord开发者后台开启)
  • 如果使用discord.js v14版本,需修改导入方式和频道类型判断:
    const { Client, GatewayIntentBits, ChannelType } = require('discord.js');
    const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages] });
    // 频道类型判断改为 channel.type === ChannelType.GuildText
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:12:56