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

Discord机器人读取本地TXT文件异常求助(附代码)

Discord.js 读取本地TXT执行!warn命令问题排查与修复

常见问题点

  • 频道定位失败:带特殊符号的中文频道名容易匹配出错
  • TXT读取逻辑问题:异步处理不当、命令格式解析错误
  • 命令执行方式错误:没有正确模拟命令触发的流程

修正后的代码示例(适配Discord.js v14)

const { Client, GatewayIntentBits, ChannelType } = require('discord.js');
const fs = require('fs').promises;
const path = require('path');

const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent
  ]
});

client.on('ready', async () => {
  console.log(`已登录:${client.user.tag}`);
  
  // 精准匹配目标频道
  const targetChannel = client.channels.cache.find(
    channel => channel.name === '『💬』general' && channel.type === ChannelType.GuildText
  );
  
  if (!targetChannel) {
    console.error('找不到目标频道 #『💬』general');
    return;
  }

  try {
    // 读取本地命令文件
    const filePath = path.join(__dirname, 'warn_commands.txt');
    const fileContent = await fs.readFile(filePath, 'utf8');
    
    // 按行拆分命令,过滤空行
    const commands = fileContent.split('\n').filter(line => line.trim() !== '');
    
    for (const cmd of commands) {
      if (cmd.startsWith('!warn')) {
        // 发送命令到频道触发处理逻辑
        await targetChannel.send(cmd);
        // 加延迟避免触发Discord限流机制
        await new Promise(resolve => setTimeout(resolve, 1000));
      }
    }
    console.log('所有警告命令执行完成');
  } catch (err) {
    console.error('执行出错:', err);
  }
});

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

TXT文件正确格式示例

每行存放一个完整的!warn命令,格式如下:

!warn @用户ID 警告原因:发布违规内容
!warn @用户名 警告原因:刷屏干扰交流
!warn 123456789012345678 警告原因:辱骂他人
  • 每行仅保留一个命令,尽量不要留空行
  • 可通过用户ID、@用户名两种方式指定警告对象
  • 警告原因直接跟在命令后,无需额外格式嵌套

调试注意事项

  • 确认机器人拥有目标频道的「发送消息」「提及成员」权限
  • 检查机器人Token是否正确,且已加入目标服务器
  • 若使用第三方命令框架,需确保!warn命令已正确注册并能响应频道消息
  • 查看控制台输出的错误信息,快速定位问题(比如文件路径错误、频道不存在等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:37:07