Skip to content

Instantly share code, notes, and snippets.

@jungb
Last active August 29, 2015 14:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jungb/ed6362d27206ad2b5c64 to your computer and use it in GitHub Desktop.
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
/*
* 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