Skip to content

Instantly share code, notes, and snippets.

@caub
Last active September 20, 2016 18:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save caub/42e76693363f543b3f79 to your computer and use it in GitHub Desktop.
Save caub/42e76693363f543b3f79 to your computer and use it in GitHub Desktop.
var cheerio = require('cheerio');
var Promise = require("bluebird");
var request = Promise.promisifyAll(require('request'));
var WebSocket = require('ws');
var email = "SE email",
password = "SE pw",
roomid = 17;
var j = request.jar()
request.getAsync({url:"https://stackoverflow.com/users/login", jar:j}).then(function(response){
var $ = cheerio.load(response[0].body)
var fkey = $("input[name=fkey]").attr('value')
return request.postAsync({url:"https://stackoverflow.com/users/login", form: {email:email,password:password,fkey:fkey}, jar:j})
}).then(function(response){
return request.getAsync({url:"http://chat.stackoverflow.com/rooms/"+roomid, jar:j})
}).then(function(response){
var $ = cheerio.load(response[0].body)
var fkey = $("input[name=fkey]").attr('value')
var url, time;
request.postAsync({url:"http://chat.stackoverflow.com/ws-auth",form:{fkey:fkey,roomid:roomid}, jar:j}).then(function(response){
url=JSON.parse(response[0].body).url
return request.postAsync({url:"http://chat.stackoverflow.com/chats/"+roomid+"/events", form:{fkey:fkey}, jar:j})
}).then(function(response){
time=JSON.parse(response[0].body).time
function send(text, prefix){
request.post({url:"http://chat.stackoverflow.com/chats/"+roomid+"/messages/new",form:{fkey:fkey,text:prefix?prefix+' '+text:text}, jar:j})
}
console.log(url+"?l="+time)
var ws = new WebSocket(url+"?l="+time, null, {headers:{
'Origin': 'http://chat.stackoverflow.com'/*,
'Cookie': j.getCookieString('http://stackoverflow.com')*/
}});
var r = 'r'+roomid;
ws.on('message', function(message) {
console.log('received:', message);
var m = JSON.parse(message);
if (m[r].e){
m[r].e.forEach(function(ev){
if (ev.event_type<=2 && ev.content.indexOf('??')===0){
if (ev.content.indexOf('??help')===0)
send('[eval bot](https://gist.github.com/cauburtin/42e76693363f543b3f79)', ':'+ev.message_id)
else
send(eval(ev.content.slice(2)), ':'+ev.message_id)
}
})
}
});
ws.on('open', function() {
console.log('opened')
});
ws.on('error', function(e) {
console.log(e)
});
})
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment