var _ = require('underscore')._, moment = require('moment-timezone'); var commands = function(dbot){ var commands = { '~get': function(event){ if(event.params[1]){ if(_.has(this.config.schema.profile, event.params[1])){ this.api.getProperty(event.server, event.user, event.params[1], function(reply){ event.reply(reply); }); } else { event.reply('Invalid property. Go home.'); } } }, '~set': function(event){ if(event.input[1] && event.input[2]){ if(_.has(this.config.schema.profile, event.input[1])){ if(event.input[1] === 'timezone') { // eugh if(moment.tz.zone(event.input[2]) !== null) { this.api.setProperty(event.server, event.user, event.input[1], event.input[2], function(reply){ event.reply(reply); }); } else { event.reply('Invalid timezone! See the pretty graph here: http://momentjs.com/timezone/'); } } else { this.api.setProperty(event.server, event.user, event.input[1], event.input[2], function(reply){ event.reply(reply); }); } } else { event.reply('Invalid property. Go home.'); } } }, '~profile': function(event) { var user = event.params[1] || event.user; event.reply(dbot.api.web.getUrl('profile/' + event.server + '/' + user)); }, '~time': function(event) { var target = event.params[1] || event.user; dbot.api.profile.getProfile(event.server, target, function(err, user, profile) { if(!err) { var tz = profile.profile.timezone; if(tz) { event.reply('The time for ' + target + ' in ' + tz + ' is ' + moment().tz(tz).format('HH:mm:ss on DD/MM/YYYY')); } else { event.reply(user.currentNick + ' needs to set a timezone with "~set timezone x"'); } } else { if(!user) { event.reply('No idea who that is mate'); } else { event.reply(user.currentNick + ' needs to set a timezone with "~set timezone x"'); } } }); } }; commands['~set'].regex = [/set ([^ ]+) (.+)/, 3]; return commands; }; exports.fetch = function(dbot){ return commands(dbot); };