building social idc bots with node.js and mongodb
DESCRIPTION
Improve your team's productivity and encourage participation with social IRC bots! Find out how to create scoreboards, encourage positive communication by awarding points, and bring your bot to life using OpenShift, Red Hat's free auto-scaling Platform as a Service. We'll power our bot using an OpenShift "gear", then add a MongoDB for memory, and teach it to speak using a javascript-based IRC library for node.js.TRANSCRIPT
![Page 1: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/1.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 1/72
SOCIAL IRC BOTS IN THE CLOUD
with
node.js
and
MongoDB
http://bit.ly/11Qft8j
![Page 2: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/2.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 2/72
presented by
/ ryan jarvinen @ryanj
![Page 3: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/3.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 3/72
Open Platform Evangelistat
Red Hat
![Page 4: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/4.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 4/72
AGENDALearn some IRC basicsCreate a bot and teach it to speakLearn some MongoDB basicsBuild a social leaderboardGo live with a Mongo-powered IRC bot in ~30 mins
![Page 5: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/5.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 5/72
CODE DU JOURhttps://github.com/openshift-quickstart/irc-
leaderboard-quickstart
![Page 6: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/6.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 6/72
IRCis
just
multiplayer notepad
![Page 7: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/7.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 7/72
“Hello, nice to troll you!”
![Page 8: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/8.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 8/72
IRCis
just multiplayer notepada drama club for nerds
![Page 9: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/9.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 9/72
ACTING / EMOTING“ An emote is an entry into a text-based
chat client that indicates an action takingplace. Unlike emoticons, they are not textart, and instead describe the action using
words.”http://en.wikipedia.org/wiki/Emote
![Page 10: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/10.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 10/72
REAL DRAMAThe Hamnet Players
http://www.hambule.co.uk/hamnet/
The Plaintext Playershttp://yin.arts.uci.edu/~players/
![Page 11: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/11.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 11/72
THE CYPOSIUM?
http://www.cyposium.net/
![Page 12: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/12.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 12/72
MAKING A BIGENTRANCE
To perform an action,
type '/me' followed by a description of an action:
/me rolls eyes at IRC over-actors
![Page 13: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/13.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 13/72
IRC BOTS
![Page 14: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/14.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 14/72
IRC BOTS AREtalking applicationsscripted actors who appear to be another user in theroomgenerally benevolent (they fight for the users)
![Page 15: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/15.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 15/72
IRC BOT ABILITIESmost bots know a few simple jokesmany know how to assist with bug reportsthey may offer links to relevant informationor even fight against spam
![Page 16: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/16.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 16/72
IRC ISjust multiplayer notepaddrama club for nerds✓an open protocol for realtime mutiuser communicationvia text ( )✓found at the heart of every high-tech company that I'veworked for✓a serious contender for "most valuable communicationtool" in many organizations✓realtime communication✓
rfc1459
![Page 17: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/17.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 17/72
IRC IS
OPEN
![Page 18: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/18.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 18/72
OPEN CLIENTS
XCHAT, COLLOQUY
![Page 19: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/19.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 19/72
WEB CLIENTSGive it a try:
http://webchat.freenode.net/
![Page 20: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/20.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 20/72
OPEN SERVERS
FREENODEOpenShift on
/join #openshift
freenode IRC
![Page 21: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/21.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 21/72
HOSTING OPTIONS
DIY / ON PREMISEPUBLIC IRC(FREENODE)
CLOUD SERVERS
![Page 22: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/22.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 22/72
IRC is built on an open standard, allowing you to host it asa service (on your own hardware), or from within a
private network (for added security).
OpenShift was designed with many of the samecharacteristics in mind, minus the drama.
![Page 23: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/23.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 23/72
OPENSHIFT IS
OPEN
![Page 24: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/24.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 24/72
OPEN CLIENTINTERFACE
https://github.com/openshift/rhc
![Page 25: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/25.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 25/72
OPEN CARTRIDGEFORMAT
![Page 26: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/26.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 26/72
![Page 27: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/27.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 27/72
PAAS SOURCE
OPENSHIFT ORIGIN
![Page 28: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/28.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 28/72
![Page 29: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/29.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 29/72
OPENSHIFT HOSTING
DIY / ORIGINONLINE
ENTERPRISE
![Page 30: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/30.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 30/72
DEVELOPER PREVIEWSign up for an OpenShift Online account:
Free-as-in-beer (no cost)Free-as-in-freedom (open source)512 MB RAM / 1 GB storage per gear (3 free)Need more resources? (just ask!)REALLY a Developer Preview (GA this summer)
http://openshift.redhat.com/
![Page 31: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/31.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 31/72
THE CLOUD LANDSCAPE
![Page 32: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/32.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 32/72
OPENSHIFT IS...
![Page 33: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/33.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 33/72
![Page 34: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/34.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 34/72
THE BIG PICTURE
![Page 35: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/35.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 35/72
![Page 36: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/36.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 36/72
OPENSTACK
IS OPENand
FOCUSED ON IAAS
![Page 37: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/37.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 37/72
BUZZ WORDS
PUBLIC CLOUD +PRIVATE CLOUD =
HYBRID CLOUD
![Page 38: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/38.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 38/72
GETTING STARTED WITH OPENSHIFTPRE-REQUISITES:
ruby, rubygemsgit
![Page 39: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/39.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 39/72
INSTALLING THE 'RHC' CLIENT TOOLand
install
sudo gem install rhc
node.js
![Page 40: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/40.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 40/72
HELP WITH CLIENT TOOLSRHC client tool installation
Openshift Getting Started guide
https://openshift.redhat.com/community/get-started#cli
https://openshift.redhat.com/community/developers/get-started
![Page 41: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/41.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 41/72
CONFIGURING YOUR DEV ENVIRONMENTWill automatically:
set your openshift email addressverify your ssh key configurationconfigure your application namespace
rhc setup
![Page 42: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/42.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 42/72
GEARING UP A NEW APP ON OPENSHIFTor
rhc app create APP_NAME APP_CARTRIDGE
rhc app create ircbot nodejs-0.6
![Page 43: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/43.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 43/72
Application Options------------------- Namespace: ryanj Cartridges: nodejs-0.6 Gear Size: default Scaling: no
Creating application 'ircbot' ... done
Waiting for your DNS name to be available ... done
Downloading the application Git repository ...Cloning into 'ircbot'...
![Page 44: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/44.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 44/72
ircbot @ http://ircbot-ryanj.rhcloud.com/ (uuid: 25918304bf8d406e89802a1e642063a0)--------------------------------------------------- Created: 10:23 PM Gear Size: small Git URL: ssh://[email protected]/~/git/ircbot.git/ SSH: [email protected]
nodejs-0.6 (Node.js 0.6) ------------------------
RESULT:Application ircbot was created.
![Page 45: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/45.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 45/72
SUCCESS!You now have a basic node.js app up an running on
OpenShift!
Your gear is now configured with:
it's own git repoit's own web serverssh accessloggingpublicly accessible DNS
![Page 46: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/46.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 46/72
BUILDING YOUR BOT cd ircbot
![Page 47: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/47.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 47/72
INSTALLING DEPENDENCIESUsing Node's :
Include the `-S` flag in order to save this dependency toyour application's `package.json` file.
npm package managernpm install irc -S
http://npmjs.org/package/irc/
![Page 48: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/48.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 48/72
BOT BASICSAdd the following to your server.js to load and configure
the irc library:var irc = require('irc');var bot_name = process.env.OPENSHIFT_APP_NAME || 'ircbot';var bot = new irc.Client('chat.freenode.net', bot_name, { channels: ['#botzoo', '#botwar'], port: 8001, debug: true});
![Page 49: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/49.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 49/72
TEACHING YOUR BOT TO SPEAKListen and respond to conversations as they happen:bot.addListener('message', function(from, to, message) { if( message.indexOf('Know any good jokes?') > -1 || message.indexOf('good joke') > -1 ) { bot.say(to, 'Knock knock!'); }});
![Page 50: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/50.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 50/72
Getting to the punchline:bot.addListener('message', function(from, to, message) { if( message.indexOf('who is there?') > -1 || message.indexOf("who's there?") > -1 || message.indexOf("Who's there?") > -1 || message.indexOf("Who is there?") > -1 ) { bot.say(to, 'Doris'); }});bot.addListener('message', function(from, to, message) { if( message.indexOf('Doris who?') > -1 || message.indexOf("doris who?") > -1 ) { bot.say(to, "Doris locked, that's why I'm knocking!"); }});
![Page 51: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/51.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 51/72
COMMITTING YOUR CHANGESgit add package.json server.jsCommit your changes locally
git commit -m 'adding irc npm dependency, initializing irclibrary, adding a few jokes'
![Page 52: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/52.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 52/72
DEPLOYMENTDone! Your bot should now be live on IRC.
git push
![Page 53: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/53.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 53/72
INTERACTING WITH YOUR NEW BOTLogin to IRC, and enter one of the channels that your bot
has been configured to join:
If you don't already have an IRC client, you can connect tofreenode on the web:
/join #botzoo
http://webchat.freenode.net/
![Page 54: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/54.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 54/72
Ask if anyone knows a good joke:[guest] Know any good jokes?[ircbot] Knock knock![guest] Who is there?[ircbot] Doris[guest] Doris who?[ircbot] Doris locked, that's why I'm knocking![guest] meh...
![Page 55: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/55.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 55/72
BOT DEBUGGING AND MAINTAINANCEIf your bot decides to quit mid-conversation, it may be
suffering from a bug.
Checking it's logs may reveal what set it off:
Or, debug it while running locally:
rhc tail ircbot
npm start
![Page 56: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/56.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 56/72
TEACHING YOUR BOT TOKEEP SCORE
![Page 57: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/57.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 57/72
SETTING UP MONGODB ON OPENSHIFTrhc cartridge add mongodb-2.2
![Page 58: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/58.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 58/72
Adding mongodb-2.2 to application 'ircbot' ... Success
mongodb-2.2 (MongoDB NoSQL Database 2.2)---------------------------------------- Connection URL: mongodb://127.6.102.129:27017/ Database Name: ircbot Password: T5xJwCiDZYGn Username: admin
RESULT:Added mongodb-2.2 to application ircbot
![Page 59: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/59.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 59/72
Adding mongodb-2.2 to application 'ircbot' ... Success
MongoDB 2.2 database added. Please make note of these credentials:
Root User: admin Root Password: T5xJwCiDZYGn Database Name: ircbot
Connection URL: mongodb://$OPENSHIFT_MONGODB_DB_HOST:$OPENSHIFT_MONGODB_DB_PORT/
You can manage your new MongoDB by also embedding rockmongo-1.1The rockmongo username and password will be the same as the MongoDB credentials above.
![Page 60: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/60.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 60/72
ROCKMONGO ON OPENSHIFT(optional)
rhc cartridge add rockmongo-1.1
![Page 61: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/61.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 61/72
ADDING A MONGOJS DEPENDENCYnpm install -S mongojs
![Page 62: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/62.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 62/72
CONNECTING TO MONGODBvar mongojs = require('mongojs');var connection_string = bot_name;if(process.env.OPENSHIFT_MONGODB_DB_PASSWORD){ connection_string = process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":" + process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" + process.env.OPENSHIFT_MONGODB_DB_HOST + '/' + process.env.OPENSHIFT_APP_NAME;}var db = mongojs(connection_string, ['scoreboard']);
![Page 63: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/63.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 63/72
SETTING A SCOREbot.addListener('message', function(from, to, message) { if( message.indexOf('++') > -1 ){ var subject = message.slice(0,message.indexOf('++')); db.scoreboard.find({query: {name: subject}}).limit(1, function(err, doc) { if( typeof(doc)=='object' && (doc instanceof Array) && doc[0] && doc[0].name){ // update db.scoreboard.update({name: subject}, {$inc:{score:1}}, function(err) { bot.say(to, "score: " + ( 1 + doc[0].score )); }); }else{ // insert db.scoreboard.insert({name: subject, score: 1}, function(err) { bot.say(to, "score: 1"); }); } }); }});
![Page 64: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/64.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 64/72
SHOWING THE SCOREBOARDbot.addListener('message', function(from, to, message) { if( message.indexOf('scoreboard') > -1 ){ db.scoreboard.find().sort({score:-1}).limit(10).forEach(function(err, doc){ if (doc && doc.name && doc.score ) { bot.say(to, doc.name + ": " + doc.score); } }); }});
![Page 65: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/65.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 65/72
UPDATING YOUR APPgit add package.json server.js
git commit -m 'adding a social scoreboard'
git push
![Page 66: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/66.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 66/72
SOCIAL REWARDS
![Page 67: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/67.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 67/72
ALLOCATING POINTSterm++
[raphael] Anyone down for pizza?[donatello] pizza++[ircbot] score: 43[raphael] Let's order two[leonardo] Good idea, Raph! raphael++[ircbot] score: 23
![Page 68: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/68.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 68/72
CHECKING THE SCOREBOARDircbot scoreboard
[ircbot] ircbot: 7[ircbot] ryanj: 4[ircbot] doris: -2
![Page 69: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/69.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 69/72
BOTS ON-DEMANDrhc app create ircbot nodejs-0.6 mongodb-2.2 --from-code=https://github.com/openshift-quickstart/irc-leaderboard-quickstart.git
![Page 70: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/70.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 70/72
You can find much more information about this npm IRClibrary here:
https://github.com/martynsmith/node-irc
![Page 71: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/71.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 71/72
Thanks for following along! --ryanj
![Page 72: Building Social IDC Bots with Node.js and MongoDB](https://reader034.vdocument.in/reader034/viewer/2022042700/55923e7a1a28ab1a3f8b45cc/html5/thumbnails/72.jpg)
3/11/13 reveal.js - The HTML Presentation Framework
ryanjarvinen.com/presentations/irc/#/ 72/72
REFERENCES
Building social IRC Bots with Node.js (Part 1)Leaderboards for IRC - Social Node.js Bots (Part 2)RHC command-line installer helpWhy contact Freenode on port 8001?IRC - It's how hackers talk. Luckily, I speak "leet"node-ircRun any version of Node.js on OpenShift