discord.js中{ split: true }无法拆分超2000字符消息问题求助
问题根因
你使用的是discord.js v13及更高版本,该版本对channel.send()方法的传参规则做了不兼容更新:不再支持「第一个参数传消息文本、第二个参数传配置项」的旧写法,所有参数都需要统一放在同一个配置对象中,你之前写的{ split: true }参数根本没有被SDK正确识别,自然不会生效。
修复方案
只需要修改文件监听回调内的消息发送逻辑即可,修改后的代码如下:
fs.watchFile(playlist, (eventType, filename) => { readLastLines.read(playlist, 255) .then((lines) => bot.channels.cache.get(settings.discord_channel).send({ content: lines, split: true })) .catch(err => console.error('消息发送失败:', err)); // 新增错误捕获方便后续排查问题 });
额外优化建议
- 若你的文件更新频率较高,
fs.watchFile会重复触发回调导致重复发送消息,建议添加防抖逻辑限制短时间内只触发一次发送 - 若读取的文本存在大量连续无换行的超长内容,可以额外配置split的拆分规则,指定按固定字符、固定长度拆分,避免截断半行内容
- 请提前确认机器人已获得对应频道的发送消息权限,避免权限问题导致消息发送失败
内容的提问来源于stack exchange,提问作者John nielsen
相关产品推荐
相关产品推荐

