mirror of
				https://github.com/reality/dbot.git
				synced 2025-11-04 03:17:44 +01:00 
			
		
		
		
	experimental bayesian classifier for detecting being an asshole and drama
This commit is contained in:
		
							parent
							
								
									e07eca7168
								
							
						
					
					
						commit
						5cc3b224c2
					
				
							
								
								
									
										62
									
								
								modules/drama.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								modules/drama.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,62 @@
 | 
			
		||||
var brain = require('brain');
 | 
			
		||||
 | 
			
		||||
var drama = function(dbot) {
 | 
			
		||||
    var dbot = dbot;
 | 
			
		||||
    var last = {};
 | 
			
		||||
    var options = {
 | 
			
		||||
        'backend': {
 | 
			
		||||
            'type': 'Redis',
 | 
			
		||||
            'options': {
 | 
			
		||||
                'hostname': 'localhost',
 | 
			
		||||
                'port': 6379,
 | 
			
		||||
                'name': 'dbotdrama'
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        'thresholds': {
 | 
			
		||||
            'drama': 3,
 | 
			
		||||
            'beinganasshole': 3,
 | 
			
		||||
            'normal': 1
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        'def': 'normal'
 | 
			
		||||
    };
 | 
			
		||||
    var bayes = new brain.BayesianClassifier(options);
 | 
			
		||||
 | 
			
		||||
    var commands = {
 | 
			
		||||
        '~train': function(data, params) {
 | 
			
		||||
            if(data.user == dbot.admin) {
 | 
			
		||||
                bayes.train(last[params[1]][params[2]], params[3]);
 | 
			
		||||
                dbot.say(data.channel, 'Last thing ' + params[2] + ' said in ' + 
 | 
			
		||||
                        params[1] + ' classified as \'' + params[3] + '\'');
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        'onLoad': function() {
 | 
			
		||||
            return commands;
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        'listener': function(data) {
 | 
			
		||||
            if(reporting == true) {
 | 
			
		||||
                var category = bayes.classify(data.message, function(category) {
 | 
			
		||||
                    console.log(category + '!'); 
 | 
			
		||||
                }.bind(this));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if(last.hasOwnProperty(data.channel)) {
 | 
			
		||||
               last[data.channel][data.user] = data.message; 
 | 
			
		||||
            } else {
 | 
			
		||||
                last[data.channel] = { };
 | 
			
		||||
                last[data.channel][data.user] = data.message;
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        'on': 'PRIVMSG'
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
exports.fetch = function(dbot) {
 | 
			
		||||
    return drama(dbot);
 | 
			
		||||
};
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user