读取文本文件生成数组并循环自动发送,遇字符串参数错误如何解决
问题解决
错误原因
你代码里的问题有两个:
- 把整个
lines数组直接赋值给message,但autosend.PostLoop要求message必须是字符串,这就是你看到Error: Please make sure that the message parameter is a string!的原因。 - 循环逻辑错误,没有遍历每一行文本执行发送操作,反而把整个数组重复赋值给
message。
修正后的代码
// 读取文件内容 const data = fs.readFileSync('mr_robot.txt', 'UTF-8'); // 分割成每行的数组(兼容Windows和Unix换行符) const lines = data.split(/\r?\n/); // 遍历每一行文本 for (const line of lines) { // 跳过空行,避免发送空消息 if (!line.trim()) continue; // 调用发送方法,line是单个字符串,符合参数要求 autosend.PostLoop(line, channelID, tokenID, minimum, maximum); }
代码说明
- 用
for...of循环遍历lines数组,每次取出的line是单个字符串,完全满足PostLoop的参数要求。 - 增加空行判断,避免文件末尾的空行或无内容的行被发送。
- 原代码中未使用的
n_lines变量已删除,简化逻辑。
内容的提问来源于stack exchange,提问作者Glen Sale
相关产品推荐
相关产品推荐

