forked from GitHub/dbot
		
	Central command management. Quotes now handles its own commands.
This commit is contained in:
		
							parent
							
								
									86a428a5a2
								
							
						
					
					
						commit
						6b0e2de264
					
				| @ -1,47 +1,75 @@ | ||||
| var quotes = function(dbot) { | ||||
|     var quotes = dbot.db.quoteArrs; | ||||
|      | ||||
|     var commands = { | ||||
|         '~q': function(data, params) {  | ||||
|             var q = data.message.valMatch(/^~q ([\d\w\s]*)/, 2) | ||||
|             if(q) { | ||||
|                 key = q[1].trim().toLowerCase(); | ||||
|                 if(quotes.hasOwnProperty(key)) { | ||||
|                     dbot.say(data.channel, key + ': ' + quotes[key].random()); | ||||
|                 } else { | ||||
|                     dbot.say(data.channel, 'No quotes under ' + key); | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
| 
 | ||||
|         '~qcount': function(data, params) { | ||||
|             var q = data.message.valMatch(/^~qcount ([\d\w\s]*)/, 2); | ||||
|             if(q) { | ||||
|                 key = key[1].trim().toLowerCase(); | ||||
|                 if(quotes.hasOwnProperty(key)) { | ||||
|                     dbot.say(data.channel, key + ' has ' + quotes[key].length + ' quotes.'); | ||||
|                 } else { | ||||
|                     dbot.say(data.channel, 'No quotes under ' + key); | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
| 
 | ||||
|         '~qadd': function(data, params) { | ||||
|             var q = data.message.valMatch(/^~qadd ([\d\w\s]*)=(.+)$/, 3); | ||||
|             if(q) { | ||||
|                 q[1] = q[1].toLowerCase(); | ||||
|                 if(!Object.isArray(quotes[q[1]])) { | ||||
|                     quotes[q[1]] = []; | ||||
|                 } | ||||
|                 quotes[q[1]].push(q[2]); | ||||
|                 dbot.say(data.channel, 'Quote saved in \'' + q[1] + '\' (' + quotes[q[1]].length + ')'); | ||||
|             } | ||||
|         }, | ||||
| 
 | ||||
|         '~qset': function(data, params) { | ||||
|             var q = data.message.valMatch(/^~qset ([\d\w\s]*)=(.+)$/, 3); | ||||
|             if(q) { | ||||
|                 q[1] = q[1].toLowerCase(); | ||||
|                 if(!quotes.hasOwnProperty(q[1]) || (quotes.hasOwnProperty(q[1]) &&  | ||||
|                         quotes[q[1]].length == 1)) { | ||||
|                     quotes[q[1]] = [q[2]]; | ||||
|                     dbot.say(data.channel, 'Quote saved as ' + q[1]); | ||||
|                 } else { | ||||
|                     dbot.say(data.channel, 'No replacing arrays, you whore.'); | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
| 
 | ||||
|         '~rq': function(data, params) { | ||||
|             var rQuote = Object.keys(quotes).random(); | ||||
|             dbot.say(data.channel, rQuote + ': ' + quotes[rQuote].random()); | ||||
|         }, | ||||
|          | ||||
|         '~reality': function(data, params) { | ||||
|             dbot.say(data.channel, dbot.db.realiPuns.random()); | ||||
|         }, | ||||
| 
 | ||||
|         '~d': function(data, params) { | ||||
|             dbot.say(data.channel,  data.user + ': ' + dbot.db.quoteArrs['depressionbot'].random()); | ||||
|         }, | ||||
| 
 | ||||
|     }; | ||||
| 
 | ||||
|     return { | ||||
|         get: function(key) {  | ||||
|             key = key.toLowerCase(); | ||||
|             if(quotes.hasOwnProperty(key)) { | ||||
|                 return key + ': ' + quotes[key].random(); | ||||
|             } else { | ||||
|                 return 'No quotes under ' + key; | ||||
|             } | ||||
|         }, | ||||
| 
 | ||||
|         count: function(key) { | ||||
|             key = key.toLowerCase(); | ||||
|             if(quotes.hasOwnProperty(key)) { | ||||
|                 return key + ' has ' + quotes[key].length + ' quotes.'; | ||||
|             } else { | ||||
|                 return 'No quotes under ' + key; | ||||
|             } | ||||
|         }, | ||||
| 
 | ||||
|         add: function(key) { | ||||
|             key[1] = key[1].toLowerCase(); | ||||
|             if(!Object.isArray(quotes[key[1]])) { | ||||
|                 quotes[key[1]] = []; | ||||
|             } | ||||
|             quotes[key[1]].push(key[2]); | ||||
|             return 'Quote saved in \'' + key[1] + '\' (' + quotes[key[1]].length + ')'; | ||||
|         }, | ||||
| 
 | ||||
|         set: function(key) { | ||||
|             key[1] = key[1].toLowerCase(); | ||||
|             if(!quotes.hasOwnProperty(key[1]) || (quotes.hasOwnProperty(key[1]) && quotes[key[1]].length == 1)) { | ||||
|                 quotes[key[1]] = [key[2]]; | ||||
|                 return 'Quote saved as ' + key[1]; | ||||
|             } else { | ||||
|                 return 'No replacing arrays, you whore.'; | ||||
|             } | ||||
|         }, | ||||
| 
 | ||||
|         random: function() { | ||||
|             var rQuote = Object.keys(quotes).random(); | ||||
|             return rQuote + ': ' + quotes[rQuote].random(); | ||||
|         'onLoad': function() { | ||||
|             return commands; | ||||
|         } | ||||
|     }; | ||||
| }; | ||||
|  | ||||
| @ -7,50 +7,6 @@ var userCommands = function(dbot) { | ||||
|             dbot.waitingForKarma = data.channel; | ||||
|         }, | ||||
| 
 | ||||
|         '~q': function(data, params) { | ||||
|             var q = data.message.valMatch(/^~q ([\d\w\s]*)/, 2) | ||||
|             if(q) { | ||||
|                 dbot.say(data.channel, dbot.quotes.get(q[1].trim())); | ||||
|             } | ||||
|         }, | ||||
| 
 | ||||
|         '~qadd': function(data, params) { | ||||
|             var q = data.message.valMatch(/^~qadd ([\d\w\s]*)=(.+)$/, 3); | ||||
|             if(q) { | ||||
|                 dbot.say(data.channel, dbot.quotes.add(q)); | ||||
|             } else { | ||||
|                 dbot.say(data.channel, 'Burn the invalid syntax!'); | ||||
|             } | ||||
|         }, | ||||
| 
 | ||||
|         '~qset': function(data, params) { | ||||
|             var q = data.message.valMatch(/^~qset ([\d\w\s]*)=(.+)$/, 3); | ||||
|             if(q) { | ||||
|                 dbot.say(data.channel, dbot.quotes.set(q)); | ||||
|             } else { | ||||
|                 dbot.say(data.channel, 'Burn the invalid syntax!'); | ||||
|             } | ||||
|         }, | ||||
| 
 | ||||
|         '~qcount': function(data, params) { | ||||
|             var q = data.message.valMatch(/^~qcount ([\d\w\s]*)/, 2); | ||||
|             if(q) { | ||||
|                 dbot.say(data.channel, dbot.quotes.count(q[1].trim())); | ||||
|             } | ||||
|         }, | ||||
| 
 | ||||
|         '~reality': function(data, params) { | ||||
|             dbot.say(data.channel, dbot.db.realiPuns.random()); | ||||
|         }, | ||||
| 
 | ||||
|         '~d': function(data, params) { | ||||
|             dbot.say(data.channel,  data.user + ': ' + dbot.db.quoteArrs['depressionbot'].random()); | ||||
|         }, | ||||
| 
 | ||||
|         '~rq': function(data, params) { | ||||
|             dbot.say(data.channel, dbot.quotes.random()); | ||||
|         }, | ||||
| 
 | ||||
|         '~kickcount': function(data, params) { | ||||
|             if(!dbot.db.kicks.hasOwnProperty(params[1])) { | ||||
|                 dbot.say(data.channel, params[1] + ' has either never been kicked or does not exist.'); | ||||
| @ -61,22 +17,9 @@ var userCommands = function(dbot) { | ||||
|     }; | ||||
| 
 | ||||
|     return { | ||||
|         'listener': function(data) { | ||||
|             params = data.message.split(' '); | ||||
|             if(data.channel == dbot.name) data.channel = data.user; | ||||
| 
 | ||||
|             if(commands.hasOwnProperty(params[0])) { | ||||
|                 commands[params[0]](data, params); | ||||
|                 dbot.save(); | ||||
|             } else { | ||||
|                 var q = data.message.valMatch(/^~([\d\w\s]*)/, 2) | ||||
|                 if(q) { | ||||
|                     dbot.say(data.channel, dbot.quotes.get(q[1].trim())); | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
| 
 | ||||
|         'on': 'PRIVMSG' | ||||
|         'onLoad': function() { | ||||
|             return commands; | ||||
|         } | ||||
|     }; | ||||
| }; | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										41
									
								
								run.js
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								run.js
									
									
									
									
									
								
							| @ -2,20 +2,17 @@ require('./snippets'); | ||||
| var fs = require('fs'); | ||||
| var jsbot = require('./jsbot'); | ||||
| 
 | ||||
| var modules = ['user', 'admin', 'puns', 'kick', 'reality', 'karma', 'youare']; | ||||
| var modules = ['user', 'admin', 'puns', 'kick', 'reality', 'karma', 'youare', 'quotes']; | ||||
| 
 | ||||
| var DBot = function(dModules, quotes) { | ||||
|     this.admin = 'reality'; | ||||
|     this.waitingForKarma = false; | ||||
|     this.name = 'depressionbot'; | ||||
|     this.commands = {}; | ||||
|     this.db = JSON.parse(fs.readFileSync('db.json', 'utf-8')); | ||||
|     this.quotes = require(quotes).fetch(this); | ||||
| 
 | ||||
|     this.instance = jsbot.createJSBot(this.name, 'elara.ivixor.net', 6667, this, function() { | ||||
|         this.instance.join('#realitest'); | ||||
|         this.instance.join('#42'); | ||||
|         this.instance.join('#fail'); | ||||
|         this.instance.join('#itonlygetsworse'); | ||||
|     }.bind(this)); | ||||
| 
 | ||||
|     this.moduleNames = dModules; | ||||
| @ -34,8 +31,8 @@ DBot.prototype.save = function() { | ||||
| DBot.prototype.reloadModules = function() { | ||||
|     this.rawModules = []; | ||||
|     this.modules = []; | ||||
|     this.commands = {}; | ||||
| 
 | ||||
|     // Reload snippets
 | ||||
|     var path = require.resolve('./snippets'); | ||||
|     require.cache[path] = undefined; | ||||
|     require('./snippets'); | ||||
| @ -54,9 +51,37 @@ DBot.prototype.reloadModules = function() { | ||||
| 
 | ||||
|     this.modules = this.rawModules.collect(function(rawModule) { | ||||
|         var module = rawModule.fetch(this); | ||||
|         this.instance.addListener(module.on, module.listener); | ||||
| 
 | ||||
|         if(module.listener) { | ||||
|             this.instance.addListener(module.on, module.listener); | ||||
|         } | ||||
| 
 | ||||
|         if(module.onLoad) { | ||||
|             var newCommands = module.onLoad(); | ||||
|             for(key in newCommands) { | ||||
|                 if(newCommands.hasOwnProperty(key) && Object.prototype.isFunction(newCommands[key])) { | ||||
|                     this.commands[key] = newCommands[key]; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return module; | ||||
|     }.bind(this)); | ||||
| 
 | ||||
|     this.instance.addListener('PRIVMSG', function(data) { | ||||
|         params = data.message.split(' '); | ||||
|         if(data.channel == this.name) data.channel = data.user; | ||||
| 
 | ||||
|         if(this.commands.hasOwnProperty(params[0])) { | ||||
|             this.commands[params[0]](data, params); | ||||
|             this.save(); | ||||
|         } else { | ||||
|             var q = data.message.valMatch(/^~([\d\w\s]*)/, 2) | ||||
|             if(q) { | ||||
|                 this.say(data.channel, this.quotes.get(q[1].trim())); | ||||
|             } | ||||
|         } | ||||
|     }.bind(this)); | ||||
| }; | ||||
| 
 | ||||
| new DBot(modules, './modules/quotes'); | ||||
| new DBot(modules); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Luke Slater
						Luke Slater