Hello, Hackaday-ers! I'm Gabe, and I have a JavaScript chat bot on Kongregate called "Crunchybot". The way it currently works is by injecting JavaScript code into the webpage after it's loaded, to add custom listeners for commands, and send custom responses. This, however, has very obvious pitfalls:

I have to have my computer and a browser up 24-7 just to connect.

I have to rely on the browser's implementation of JavaScript to be reliably not broken.

I have to stay with functionality that doesn't break cross-site scripting rules (so no tweeting, getting weather info, or anything to do with files [can someone say chatlogs?]).

So, according to Ben Vinson's (Kong's chat creator) page:

Kongregate's chat platform is based upon several open-source projects. The back-end XMPP server is a customized version of Openfire, and the client side uses the XIFF library.

I have asked for and received permission from Mr. Vinson to try to create or modify an XMPP client to communicate with Kongregate's chat server, so that's what I plan on doing. I don't, however, have any idea where to start, so I'm bringing it into the world of Hackaday for help from those that know. I also plan on putting this on a Forebrain development board, and then housing it in a physical robot to interact physically with (and maybe be interacted virtually to do physical things...) and be stored. If anyone at all could help with this undertaking, please please PLEASE contact me. I'll keep a log of what I've done so far, and what I plan on doing, here.

OK, so I've managed to find the server they use for the openfire protocol, but I have no clue how to read XMPP data from wireshark, and due to the potential for my password being in those captures somewhere, I don't really want to release them. If anyone knows how to read XMPP data, either let me know, or analyse the traffic from and to of1.kongregate.com.

I would, but apparently they are running a very hacked-together implementation of it. I tried directly connecting to of1.kongregate.com, but it would go as far as an authentication step, then fail when I put in a password for an actual account. If it were as simple as a library, it'd be done already.