<commit_before>var $ = require('cheerio').load('');
var colors = require('colors/safe');

function MessageHandler(skyChat) {
  this.skyChat = skyChat;
  this.lastTms = 0;
}

MessageHandler.prototype.clean = function (msg) {
  var str = msg;
  if(typeof msg === 'undefined') return 'undefined';
  if(typeof msg.message !== 'undefined') str = msg.message;
  var noSmiley = str.replace(/<img.*?alt="(.*?)".*?>/g, '$1');
  var noImg = noSmiley.replace(/<img.?src="(.*?)".*?>/g, 'http://skychat.fr/$1');
  var noHTML = $('<p>' + noImg + '</p>').text();
  return noHTML;
};

MessageHandler.prototype.format = function (msg) {
  switch(msg.message_type) {
    case 'bot_message':
    case 'user_message':
      return this.formatUser(msg) + this.clean(this.formatCitation(msg));
    case 'user_me':
      return '* ' + this.formatColor(msg) + ' ' +
             colors.italic(this.clean(msg));
    case 'user_mp':
      return colors.green('[MP]') + this.formatUser(msg) + this.clean(msg);
    case 'user_spoil':
      return colors.red.bold('[SPOIL]') + colors.black(this.clean(msg));
    default:
      if(typeof msg.message === 'undefined') return;
      return colors.red(this.clean(msg));
  }
};

MessageHandler.prototype.formatCitation = function (msg) {
  var str = msg;
  if(typeof msg.message !== 'undefined') str = msg.message;
  var citation = str.match(/<bl.*?>(.*?)<\/b.*?e>/);
  if(citation) {
    var user_cite = citation[0].match(/.*?>Par (.*?)<.*?r>/);
    citation = citation[0].replace(/.*?r>/, '');
    var message = str.replace(/.*ote>/, '');
    str = '[' + user_cite[1] + '] ' + citation;
    if(message !== ' ') str += '\n -&gt; ' + message;
  }

  return str;
};

MessageHandler.prototype.formatColor = function(msg) {
  switch(msg.color) {
    case '#ef4848': return colors.red.bold(msg.pseudo);
    case '#457dbb': return colors.red(msg.pseudo);
    case '#bf00ff': return colors.green(msg.pseudo);
    case '#046380': return colors.blue(msg.pseudo);
    case '#85c630': return colors.cyan(msg.pseudo);
    case '#ffab46': return colors.yellow(msg.pseudo);
    case '#f5a6bf': return colors.magenta(msg.pseudo);
    default: return colors.white(msg.pseudo);
  }
};

MessageHandler.prototype.formatUser = function (msg) {
  return '[' + this.formatColor(msg) + '] ';
};

MessageHandler.prototype.handle = function (msg) {
  if(msg.tms < this.lastTms) return;
  this.lastTms = msg.tms;

  if(msg.message.indexOf('!') === 0) this.handleCommand(msg);
  else if(msg.message.pseudo == 'SkychatBot') this.handleBotMessage(msg);
  else this.skyChat.eventLoop.fire('newmessage', msg);
};

MessageHandler.prototype.handleBotMessage = function (msg) {
  var cleanMsg = this.clean(msg);

  // Points transfer
	if(cleanMsg.indexOf('de commission') !== -1) {
		var giveMsg = msg.message.match(/<b>(.*?)<\/b>/g);
		this.skyChat.eventLoop.fire('givepoints', {
			from: Util.removeHTML(giveMsg[2]),
			amount: parseInt(Util.removeHTML(giveMsg[1]), 10),
			to: Util.removeHTML(giveMsg[0])
		});
	// Random number generation
	} else if(cleanMsg.indexOf('tiré par') !== -1) {
		var match = cleanMsg.match(/t (.*) t.*?r (.*): (.*)/);
		this.skyChat.eventLoop.fire('rand', {
			max: parseInt(match[1], 10),
			pseudo: match[2],
			number: parseInt(match[3], 10)
		});
  }
};

MessageHandler.prototype.handleCommand = function (msg) {
  var cleanMsg = this.clean(msg);
  var subArg = cleanMsg.indexOf(' ') + 1;
	this.skyChat.eventLoop.fire('command', {
		user: msg.pseudo,
		name: cleanMsg.substring(1).split(' ')[0],
		args: subArg ? cleanMsg.substring(subArg) : '',
		nbArgs: cleanMsg.split(' ').length - 1
	});
};

module.exports = MessageHandler;
<commit_msg>Fix redskybot event<commit_after>var $ = require('cheerio').load('');
var colors = require('colors/safe');

function MessageHandler(skyChat) {
  this.skyChat = skyChat;
  this.lastTms = 0;
}

MessageHandler.prototype.clean = function (msg) {
  var str = msg;
  if(typeof msg === 'undefined') return 'undefined';
  if(typeof msg.message !== 'undefined') str = msg.message;
  var noSmiley = str.replace(/<img.*?alt="(.*?)".*?>/g, '$1');
  var noImg = noSmiley.replace(/<img.?src="(.*?)".*?>/g, 'http://skychat.fr/$1');
  var noHTML = $('<p>' + noImg + '</p>').text();
  return noHTML;
};

MessageHandler.prototype.format = function (msg) {
  switch(msg.message_type) {
    case 'bot_message':
    case 'user_message':
      return this.formatUser(msg) + this.clean(this.formatCitation(msg));
    case 'user_me':
      return '* ' + this.formatColor(msg) + ' ' +
             colors.italic(this.clean(msg));
    case 'user_mp':
      return colors.green('[MP]') + this.formatUser(msg) + this.clean(msg);
    case 'user_spoil':
      return colors.red.bold('[SPOIL]') + colors.black(this.clean(msg));
    default:
      if(typeof msg.message === 'undefined') return;
      return colors.red(this.clean(msg));
  }
};

MessageHandler.prototype.formatCitation = function (msg) {
  var str = msg;
  if(typeof msg.message !== 'undefined') str = msg.message;
  var citation = str.match(/<bl.*?>(.*?)<\/b.*?e>/);
  if(citation) {
    var user_cite = citation[0].match(/.*?>Par (.*?)<.*?r>/);
    citation = citation[0].replace(/.*?r>/, '');
    var message = str.replace(/.*ote>/, '');
    str = '[' + user_cite[1] + '] ' + citation;
    if(message !== ' ') str += '\n -&gt; ' + message;
  }

  return str;
};

MessageHandler.prototype.formatColor = function(msg) {
  switch(msg.color) {
    case '#ef4848': return colors.red.bold(msg.pseudo);
    case '#457dbb': return colors.red(msg.pseudo);
    case '#bf00ff': return colors.green(msg.pseudo);
    case '#046380': return colors.blue(msg.pseudo);
    case '#85c630': return colors.cyan(msg.pseudo);
    case '#ffab46': return colors.yellow(msg.pseudo);
    case '#f5a6bf': return colors.magenta(msg.pseudo);
    default: return colors.white(msg.pseudo);
  }
};

MessageHandler.prototype.formatUser = function (msg) {
  return '[' + this.formatColor(msg) + '] ';
};

MessageHandler.prototype.handle = function (msg) {
  if(msg.tms < this.lastTms) return;
  this.lastTms = msg.tms;

  if(msg.message.indexOf('!') === 0) this.handleCommand(msg);
  else if(msg.pseudo == 'SkychatBot') this.handleBotMessage(msg);
  else this.skyChat.eventLoop.fire('newmessage', msg);
};

MessageHandler.prototype.handleBotMessage = function (msg) {
  var cleanMsg = this.clean(msg);

  // Points transfer
	if(cleanMsg.indexOf('de commission') !== -1) {
		var giveMsg = msg.message.match(/<b>(.*?)<\/b>/g);
		this.skyChat.eventLoop.fire('givepoints', {
			from: Util.removeHTML(giveMsg[2]),
			amount: parseInt(Util.removeHTML(giveMsg[1]), 10),
			to: Util.removeHTML(giveMsg[0])
		});
	// Random number generation
	} else if(cleanMsg.indexOf('tiré par') !== -1) {
		var match = cleanMsg.match(/t (.*) t.*?r (.*): (.*)/);
		this.skyChat.eventLoop.fire('rand', {
			max: parseInt(match[1], 10),
			pseudo: match[2],
			number: parseInt(match[3], 10)
		});
  }
};

MessageHandler.prototype.handleCommand = function (msg) {
  var cleanMsg = this.clean(msg);
  var subArg = cleanMsg.indexOf(' ') + 1;
	this.skyChat.eventLoop.fire('command', {
		user: msg.pseudo,
		name: cleanMsg.substring(1).split(' ')[0],
		args: subArg ? cleanMsg.substring(subArg) : '',
		nbArgs: cleanMsg.split(' ').length - 1
	});
};

module.exports = MessageHandler;

{'fraction_non_alphanumeric': 0.2051106859797759, 'fraction_numerical': 0.013391637059305822, 'mean_word_length': 3.853448275862069, 'pattern_counts': {'":': 0, '<': 23, '<?xml version=': 0, '>': 27, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4579039', 'n_tokens_mistral': 2713, 'n_tokens_neox': 2591, 'n_words': 470}