我的机器人访问了一个网站,下载了它的视图源,并将其存储到文本文件(C:\ ViperBot \ GOW \ trooptable.txt)。我检查了文件,看起来很棒。然后,它将创建一个自定义的个人文件,我将在以后使用。下一步是读取文本文件,然后开始搜索我要查找的信息,并将信息转发给用户。
我已经尝试了每个单独的逐行文件读取器,无论使用message.channel.send还是console.log,它们中的每一个均未显示任何结果。除了需要读取文件的时间以外,所有其他文件处理方法都可以使用。一定缺少什么,我也不知道。
else if (command === 'troop' || command === 'trp') {
if (!args.length) {
return message.channel.send(`${message.author} You must specify a search criteria.\nExample; To search for Abhorath:\n.troop abhorath\n.trp abh`);
}
let i = 0;
let crit = '';
for (i = 0; i < args.length; crit += args[i] + ' ', i++) {
}
crit = crit.slice(0, crit.length - 1);
message.channel.send(`I got your troop request for ${crit}.`);
message.channel.send('Parsing...');
let file = fs.createWriteStream("C:/ViperBot/GOW/trooptable.txt");
let request = http.get("http://gowdb.com/trooptable", function (response) {
response.pipe(file);
});
message.channel.send('Finished');
fs.writeFile(`C:/ViperBot/GOW/tmp${message.author.username}.txt`, 'Michael Luna', function (err) {
if (err) throw err;
});
message.channel.send(`File created: tmp${message.author.username}.txt`);
var stream = fs.createReadStream('C:/ViperBot/GOW/trooptable.txt');
stream = byline.createStream(stream);
stream.on('readable', function() {
var line;
while (null !== (line = stream.read())) {
message.channel.send(line);
message.channel.send('Is anything happening?');
}
});
}
最后一种方法是使用名为byline的模块。所有评论都说它很漂亮。我使用了发现的每条线,但都没有结果。
我所能想到的就是我没有做某件事。控制台未显示任何错误。机器人不会停止。它仅不返回任何输出,并返回到等待聊天输入。
message.channel.send('Is anything happening?');
我将上面的代码放入其中只是看它是否会说出来,而没有。因此,正在进行计算,以至于没有行要读取。
文本文件的第一行不是空白。它的格式与您在浏览器上执行视图源时的外观完全相同。