如何使用Nodejs IRC模块加入受密码保护的IRC服务器?

时间:2013-09-08 19:47:07

标签: node.js irc

我查看了此处找到的文档:https://node-irc.readthedocs.org/en/latest/API.html#client

但我找不到插入密码的地方。没有例子。

另外,有人会告诉我userName和realName之间的区别吗?因为您的昵称被指定为第二个参数。

这就是我所拥有的:

// Create the configuration
var config = {
    options : {channels:['#mychan'], port: 6667, secure: true, userName: 'myname', realName: 'myname'},
    server: "servername",
    botName: "Ray"
};

var irc = require("irc");

var bot = new irc.Client(config.server, config.botName, config.options);

bot.join('#mychan');

bot.say('#mychan', "Hello World!");

3 个答案:

答案 0 :(得分:2)

刚刚开始工作,所以我需要回到这里并发布。这很简单,但由于示例代码我是复制pasterino'ing,因此我提到了一点。

在你的配置中,你需要这三个东西才能达到用户名/密码类型的IRC频道(这是最低限度才能做到这一点):

options: {sasl:true, username: "myBotName", password: "myBotPasswordHere"}

注意,SECURE:TRUE正在寻找SSL Certs。如果你只是尝试使用nick / password auth,我认为这不是你想要的。从您的选项配置中删除该位。

我在你看的同一个地方找到了我的答案,但是如果你继续向SASL解释,它会告诉你关于昵称/传递的东西。

https://node-irc.readthedocs.org/en/latest/API.html?highlight=sasl

这是我的整个文件。我的配置有点不同。我也连接到Twitch.tv的IRC,所以我的传递是OAUTH。

我刚刚连接并测试了它。这是一个复制/粘贴测试:http://davidwalsh.name/nodejs-irc但我修改了Twitch.tv

我懒得把服务器/缺口后的整个配置塞进去。但它有效,这就是我们在这里要做的事情。我的目的只是一个简单的聊天机器人,我可以为我的流媒体渠道工作。

WarpSpiderBot是一个用户,我必须在Twitch.tv上注册才能完成这项工作,因为它需要完整的oauth登录信息来点击他们的IRC频道。

// Create the configuration
var config = {
    channels: ["#warpspiderx"],
    server: "irc.twitch.tv",
    username: "warpspiderbot",
    nick: "warpspiderbot",
    password: "oauth:--REDACTED--",
    sasl: true
};

// Get the lib
var irc = require("irc");

// Create the bot name
var bot = new irc.Client(config.server, config.nick, config);

// Listen for joins
bot.addListener("join", function(channel, who) {
    // Welcome them in!
    bot.say(channel, who + "...dude...welcome back!");
});

// Listen for any message, PM said user when he posts
bot.addListener("message", function(from, to, text, message) {
    bot.say(from, "¿Que?");
});

// Listen for any message, say to him/her in the room
bot.addListener("message", function(from, to, text, message) {
    bot.say(config.channels[0], "¿Public que?");
});

答案 1 :(得分:1)

该文档暗示password中存在options密钥。尝试设置吗?

至于用户名与真实姓名,这是IRC的一个奇怪的区别。用户名是单个单词,realname可以更长。它出现在WHOIS(在本例中为irssi)中:

nickname [username@host.example.com]
--  ircname  : Real Name

答案 2 :(得分:0)

此配置对我来说很有效,它可以将在glitch.com上运行的node.js中的机器人连接到Freenode,在该节点上注册了昵称:

let client = new irc.Client('irc.freenode.net', 'yourname', {
  sasl: true,
  userName: 'yourname',
  password: 'yourpassword',
  secure: true,
  debug: true
});

userName字段是区分大小写的。

我发现这是因为我最初有username(全部为小写字母)。但是随后启用debug时,日志显示它正在发送正确的昵称,但是USER命令正在发送“ nodebot”作为用户名值。

对其进行更改以使其与文档[1]完全匹配,从而解决了该问题。

注意:secure选项与登录功能无关。如果您不关心网络上的通讯内容是否为明文,则可以将其删除。不推荐。