我遇到了node-irc模块的问题。我试过了this,但它似乎没有我想要的信息。这是我的问题:当我打电话时:
new irc.Client("irc.freenode.net", "BotName", {channels: ["#bots"]});
我遇到了:
/home/915Ninja/node_modules/irc/lib/irc.js:864
var channelName = channel.split(' ')[0];
^
TypeError: Cannot call method 'split' of undefined
at Client.join (/home/915Ninja/node_modules/irc/lib/irc.js:864:32)
at Object.<anonymous> (/home/915Ninja/irc/bot.js:8:5)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3`
所以,我的问题是,我做错了什么?
我的代码:
var irc = require('irc');
var eval = require('eval');
var crypto = require('crypto');
var config = {server:"irc.freenode.net", nick:"Gh0stBot", channels:['#bots'], password:"", username:"Gh0stBot", realname:"Gh0stBot JS"};
var bot = new irc.Client(config.server, config.nick, {channels: ['#bots'], password:config.password, userName:config.username, realName:config.realname});
bot.join(config.channel);
bot.addListener('message', function(nickname, to, text, msg){ //skipped for brevity}
注意:我之前将它命名为BotName是通用的。
更新:我明白了。
我打电话给bot.join(config.channels)
,我没有意识到join()
正在接收数组而不是字符串。
答案 0 :(得分:0)
irc.Client.join(s)
需要一个字符串对象。当我调用bot.join(config.channels)
时,我传递了一个字符串数组而不是只有一个字符串。因此,它试图拆分一个数组,其中split()
接受一个字符串,而不是数组。所以,我可以用以下方法修复它:
/* Passing channels into constructor... */
var bot = new irc.Client(config.server, config.nick, {
channels: config.channels //The whole array
});
或强>
/* Recursive joining... */
var bot = new irc.Client(config.server, config.nick);
for (var i = 0; i < config.channels.length; i++){
bot.join(config.channels[i]); //Passing in a string in the array one at a time
}