var Wordnik = require('wordnik'); var words = function(dbot) { this.commands = { '~define': function(event) { var query = event.params[1]; this.wn.definitions(encodeURIComponent(query), function(err, defs) { if(!err && defs[0]) { event.reply(query + ': ' + defs[0].text); } else { event.reply('No definitions found for ' + query); } }); }, '~like': function(event) { var query = event.params[1]; this.wn.word(query, {}, function(err, word) { if(!err && word[0]) { word.related({ 'limit': 10 }, function(err, related) { event.reply('Words related to ' + query + ': ' + related[0].words.join(', ') + '.'); }); } else { event.reply('Unknown word.'); } }); }, '~etymology': function(event) { var query = event.params[1]; this.wn.etymologies(encodeURIComponent(query), { 'format': 'json' }, function(err, defs) { if(!err && defs[0]) { event.reply(query + ' etymology: ' + defs[0]); } else { event.reply('No etymology found for ' + query); } }); }, '~jimble': function(event) { event.reply(event.params[1].split('').sort(function() { return (Math.round(Math.random()) - 0.5); }).join('')); } }; this.commands['~jimble'].regex = [/^jimble (.+)$/, 2]; this.onLoad = function() { this.wn = new Wordnik({ 'api_key': this.config.api_key }); }.bind(this); }; exports.fetch = function(dbot) { return new words(dbot); };