我正在使用node.js和IRC库(https://github.com/martynsmith/node-irc)创建一个irc机器人。当我尝试连接文本文件中的字符串时,irc bot会关闭并引发错误。我怀疑有一些看不见的换行符使事情搞砸了,但是我不知道如何测试或摆脱掉。
代码说明: 当用户在irc通道中键入消息时,将调用myFunction。 myFunction读取一个名为test.txt的文本文件,并将这些行作为元素保存在名为myArray的数组中。然后,我尝试使用bot.say命令使bot打印出该数组的元素。 config.channels [0]是键入消息的通道,也是漫游器应该响应的位置。
该机器人可以在不同的行上打印出myArray [0]和myArray [1],没有问题,但是之后无法连接任何东西。
错误消息: C:\ Program Files \ nodejs \ node_modules \ irc \ lib \ irc.js:849 犯错 ^ 错误[ERR_UNHANDLED_ERROR]:未处理的错误。 ([对象对象]) 在Client.emit(events.js:171:17) 在客户处。 (C:\ Program Files \ nodejs \ node_modules \ irc \ lib \ irc.js:643:26) 在Client.emit(events.js:182:13) 在迭代器上(C:\ Program Files \ nodejs \ node_modules \ irc \ lib \ irc.js:846:26) 在Array.forEach() 在Socket.handleData(C:\ Program Files \ nodejs \ node_modules \ irc \ lib \ irc.js:841:15) 在Socket.emit(events.js:182:13) 在addChunk(_stream_visible.js:283:12) 在可读的AddChunk(_stream_visible.js:260:13) 在Socket.Readable.push(_stream_visible.js:219:10)
test.txt 在不同的行上包含字母a b c d。
var config = {
channels: ["#channelname"],
server: "se.quakenet.org",
botName: "testbot"
};
// Get the lib
var irc = require("irc");
// Create the bot name
var bot = new irc.Client(config.server, config.botName, {
channels: config.channels
});
// Listen for any message
bot.addListener("message", function(from, to, text, message) {
myFunction(); //call myFunction when someone types something in the channel
});
function myFunction() {
var myArray = readTextFile('test.txt');
bot.say(config.channels[0],myArray[0]); //Print out the first element in myArray (works, this prints out 'a')
bot.say(config.channels[0],myArray[1]); //Print out the second element in myArray(works, this prints out 'b')
bot.say(config.channels[0],'test' + myArray[0]); //Works, prints out 'testa'
bot.say(config.channels[0],myArray[0] + 'test'); //concatenate a string afterwards (prints out 'a' and then throws an error and makes the bot disconnect from server)
bot.say(config.channels[0],myArray[0] + myArray[1]); //prints out 'a' and then throws an error and makes the bot disconnect from server
}
//function to read a text file:
function readTextFile(file) {
var fs = require("fs");
var textFile = fs.readFileSync("./" + file, {"encoding": "utf-8"});
textFileArray = textFile.split('\n');
return textFileArray;
}
答案 0 :(得分:0)
问题是文本文件中出现了一些不好的看不见的字符(尽管仍然不知道是什么字符)。在另一篇文章中找到答案,我使用mystring.replace(/ \ W / g,'')从myArray的所有元素中删除了所有非字母数字字符。