Last active
August 29, 2015 14:05
-
-
Save jungb/ed6362d27206ad2b5c64 to your computer and use it in GitHub Desktop.
Bot para transmitir atualizações do Live Thread do Reddit para o canal IRC
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* brbr - Bot do Reddit BR | |
* Obtém as atualizações do live thread e publica no canal IRC #brasil | |
* Roda em Node.js | |
* | |
* A melhorar: | |
* - tratamento de erros/exceções | |
* - tratamento de fim de conexão websocket (periódico?) | |
* - filtrar mensagens para não "poluir" o IRC, caso alguém resolva floodar o live thread | |
* | |
* API Live do Reddit: http://www.reddit.com/dev/api#section_live | |
* | |
* Biblioteca IRC para Node.js: https://github.com/martynsmith/node-irc/tree/0.3.x | |
* Biblioteca ws (websockets) para Node.js: http://einaros.github.io/ws/ | |
* | |
* | |
* Código em domínio público. | |
* | |
*/ | |
// Declara os dois módulos/bibliotecas usados | |
var WebSocket = require('ws'); | |
var irc = require('irc'); | |
// Declara algumas variáveis úteis | |
// ws_livethread: url do websocket do reddit br | |
var ws_livethread = new WebSocket('wss://wss.redditmedia.com/live/t7d5g4zsoixp?h=49415fc5aafa3fe6d19d3d49a2cff2b81c31abdc&e=1408379716'); | |
// usuario: nome do usuario de bot (registrado, para não dar problema no snoonet) | |
var usuario = 'usuario'; | |
// senha: senha do bot | |
var senha = 'senha'; | |
// IMPORTANTE: os dois campos devem ser mudados, conforme o nome de usuário IRC registrado junto à snoonet. | |
// conecta ao cliente IRC da snoonet, canal #brasil | |
var cliente = new irc.Client('irc.snoonet.org', usuario,{nick:usuario,userName:usuario,password:senha,port:6667,debug:true,channels:['#brasil']}); | |
// Evento disparado ao receber mensagem do websocket/live thread | |
ws_livethread.on('message', function(msg) { | |
// Parseia o JSON | |
msg_json = JSON.parse(msg); | |
// Somente vai se interessar, a princípio, por mensagens de atualização | |
switch(msg_json.type) | |
{ | |
// Mensagens update: registra no console da máquina onde roda o bot, e no canal IRC na forma (usuário) escreve: (corpo da mensagem). | |
case 'update' : | |
{ | |
console.log(msg_json.payload.data.author + ' escreve: ' + msg_json.payload.data.body); | |
cliente.say('#brasil', msg_json.payload.data.author + ' escreve: ' + msg_json.payload.data.body); | |
}; break; | |
// No caso de outras mensagens, ignora e breca o loop. | |
default: break; | |
}; | |
}); //Fim do evento ws_livethread.on |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment