Node-IRC Bot问题

时间:2015-06-24 14:02:31

标签: javascript node.js irc

我遇到了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()正在接收数组而不是字符串。

1 个答案:

答案 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
}