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

Discord.JS如何将目录内所有文件名整合为单条Discord消息发送

解决方案

你可以先将读取到的文件名数组拼接为单个换行分隔的字符串,再按照Discord单条消息2000字符的上限做分片发送,既可以避免大量触发速率限制,也不会超出单条消息长度要求。
优化后的代码示例如下:

const server = message.guild.id;
const serverpath = `./sounds/${server}`;
const fs = require('fs');
const path = require('path');

const directoryPath = path.join('/home/pi/Pablo', serverpath);

fs.readdir(directoryPath, function(err, files) {
    if (err) {
        return console.log('无法扫描目录: ' + err);
    }
    // 拼接所有文件名为单个字符串,每行展示一个文件名
    let fullContent = files.join('\n');
    // 按Discord单条消息2000字符上限拆分内容分片发送
    const maxLength = 2000;
    for (let i = 0; i < fullContent.length; i += maxLength) {
        const contentChunk = fullContent.slice(i, i + maxLength);
        message.channel.send(contentChunk);
    }
});

可选优化方案

  • 如果你希望文件名展示更清晰,可以用Discord支持的纯文本代码块包裹内容,拼接时将内容改为 \n${files.join('\n')}\n,对应将maxLength调整为1994即可(预留代码块标记占用的6个字符位置)
  • 如果需要过滤子目录只展示文件,可以在拼接前通过fs.stat判断条目类型,筛除非文件的条目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:27:05