Articles of irc

有没有可能有一个IRC客户端使用运行你自己的IRC服务器没有websockets网关的websockets?

我正在计划build立一个IRCnetworking,并正在探索选项。 我打算使用Inspircd IRC服务器 。 随着运行meteor的networking服务器。 是否有可能build立一个networkingIRC客户端与WebSockets和不使用Webscokets网关(以减lessWeb服务器上的负载),并直接连接到IRC Inspircd框? 其次,如果是,则IRCclient <-> IRCServer与IRCclient <-> WebScoketGateway (/webserver) <-> IRC Server关系有什么优点/缺点。 我看到大部分涉及node或meteor的模块(包括socket.io )都使用WSGI,为什么呢? 我在这里错过了什么? 请注意在这种情况下,IRC服务器和Web服务器都由我运行,因此使浏览器相信两者都是相同的盒子的可能性。

callback处理程序不是串联的string

我正在使用这个代码: if (msg[0] == '!web') { var result = '\x032[\x02status\x02]\x03 Web: '; checkPortTCP('127.0.0.1', 80, function() { result += JSON.stringify(this).slice(1, -1); }); bot.say(channel, result); } 当我在我的频道中键入!web时,结果是: [status] Web: 没有实际的输出。 checkPortTCP: function checkPortTCP(host, port, cb) { net.createConnection(port, host).on("connect", function(e) { cb.call("online"); }).on("error", function(e) { cb.call("offline"); }); } 我正在为IRC做一个状态机器人。 最终结果应该是… Web:在线/离线 result += JSON.stringify(this).slice(1, -1); 应该concat结果variables,然后说出它到我的频道。 但由于某种原因,它不会串联string。 谢谢!

如何在我的IRC机器人上实现反垃圾邮件技术?

我在数百个用户的公共频道上运行我的机器人。 昨天有一个人进来,只是滥用了它。 我想让任何人使用这个机器人,但是如果他们连续发送垃圾命令,并且如果他们不是像我这样的机器人“所有者”,那么我想将它们添加到一个小时左右到期的忽略列表中。 我想的一种方法是保存所有用户的所有命令,如下所示: ({ 'meder@freenode': [{command:'.weather 20851', timestamp: 209323023 }], 'jack@efnet': [{command:'.seen john' }] }) 我会设置一个cron作业来每24小时刷新一次,但是我会基本上确定一个人是否在15秒的时间内做出了X个命令,并将它们添加到忽略列表中。 其实,当我正在写这个答案的时候,我想到了一个更好的主意。也许不是存储每个用户的命令,只是将bot的命令存储在一个列表中,并继续推动,直到它达到极限15。 lastCommands = [], limit = 5; function handleCommand( timeObj, action ) { if ( lastCommands.length < limit ) { action(); } else { // enumerate through lastCommands and compare the timestamps of all 5 commands // if […]

如何使基于nodeJS的irc客户端重新连接?

我试图做一个基于nodejs的IRC Web客户端(使用https://github.com/martynsmith/node-irc和socket.io),我有一些问题。 当我启动服务器,并连接到它第一次,一切正常,客户端获得“注册”的事件,一切工作之后。 如果我刷新页面,服务器仍然得到初始化事件(与服务器和昵称),但IRC客户端不连接(尝试重新连接4000ms后,但每次它得到一个“连接得到'closures'事件”消息) 。 码: 客户端: var socket; socket = io.connect('http://localhost:8000'); … socket.emit('init', { nick: $(".popup #nume").val(), channels: channels }); 服务器端: io = require('socket.io').listen(8000); irc = require('irc'); console.log("Started server.."); io.sockets.on('connection', function(socket) { socket.on('init', function(data) { console.log('io connection with id ' + socket.id); console.log('socket length: ' + sockets.length); var first, i, good, new_message; sockets.push(socket); socket.nickname […]

处理IRC聊天漫游器应用程序的全局禁止

我有一个IRC聊天机器人,我使用Node.js + JavaScript为TwitchTV上的广播公司开发。 我从家里的电脑上运行这个程序,我知道IRC将在全球范围内禁止发送太多消息或泛滥的IP地址。 我想把聊天机器人开放给其他广播公司,但是我担心,如果不同的机器人(我已经设置了这样的广播机构可以为他们的机器人创build一个新的帐户,所以这个名字是为他们的频道量身定制的)正在从一个单一的全球IP发送消息。 什么是我可以使用的一些技术,每个广播公司都可以从机器人那里得到他们的信息而不会被全球禁止? 下面是一个可以同时在多个通道中发送消息而不被禁止的bot的例子: http://www.twitch.tv/moobot 我问过那个创造者,他们是否可以给我一些小窍门,但他们几乎说不。

快递:如何不断地将数据从控制器传递到视图

我正在从我的网站连接到现有的irc服务器。 我有几个监听器将数据logging到控制台。 我的问题是如何将这些数据传递给ejs文件,而不必反复渲染文件。 irc.addListener('kick', function (channel, who, by, reason) { console.log('%s was kicked from %s by %s: %s', who, channel, by, reason); }); 这是将数据logging到控制台的代码。 每当有事件时,我都需要将variables发送到视图

以编程方式确定对话的主题

这可能是一个非常难以回答的问题,但这是我的问题。 我想知道确定谈话话题的最好方法是什么。 谈话发生在IRC上。 我曾经写过聊天机器人,这个话题很好地解释了这个话题,但并不像我想的那么准确。 在过去,我不得不制作诸如“the”和“a”之类的常用词汇列表,然后从主题数组中过滤它们。 我不知道这是否是正确的做法。 我想知道是否有某种频率algorithm,可以让我找出当前的话题。 任何build议,如何能够实现将不胜感激。 谢谢。

如何模仿一个irc服务器断开连接来testing我的nodejs irc bot?

我正在使用net.Socket模块连接到EFNET并testing我的代码,以便将重新连接事件添加到我的机器人。 有什么方法可以模拟机器人断开连接? 这个问题是非常2-3个星期的问题 – 我已经添加了事件处理程序,以便了解从IRC断开时会发生什么: irc = { info:{} , listeners : [] , socket : new net.Socket() } irc.socket.on('timeout', function() { console.log('timeout'); }); irc.socket.on('error', function() { console.log('error'); }); irc.socket.on('end', function() { console.log('end??') setTimeout(function() { //irc.socket.connect(config.server.port, config.server.addr); }, 1000 ); }); 或者,如果有人知道哪些实际事件通常与irc机器人有关,我会感激。 编辑#1:也许我可以做一些iptables和过滤端口,而它正在运行或沿着这些线?

Node.js JavaScript:在服务器上模拟按键(像macros一样)

我想获得一个node.js脚本来模拟按键,如向上的箭头或一个button。 具体来说,我试图做一个克隆Twitch玩口袋妖怪 。 基本上,每当一个命令(上,下,左,右,a,b,select,开始)通过IRC发送,服务器模拟按键,反过来控制一个gameboy模拟器。 到目前为止,我已经为node.js写了这个IRC模块: var config = { channels: ["#tron"], server: "irc.freenode.net", botName: "wyatt" }; var irc = require("irc"); var bot = new irc.Client(config.server, config.botName, { channels: config.channels }); var commandHandler = function(from, text) { if(text.toLowerCase() === "up"||text.toLowerCase() === "down"||text.toLowerCase() === "left"||text.toLowerCase() === "right"||text.toLowerCase() === "a"||text.toLowerCase() === "b"||text.toLowerCase() === "select"||text.toLowerCase() === "start") { bot.say(config.channels[0], […]