From 66320ea8e89492b6815bcd4a2f942c7cd70afa44 Mon Sep 17 00:00:00 2001 From: Voker57 Date: Tue, 26 Jan 2010 01:55:00 +0300 Subject: markov: detect addressing-by-nick in channel and filter it in smart way --- data/rbot/plugins/markov.rb | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/data/rbot/plugins/markov.rb b/data/rbot/plugins/markov.rb index 864db4b8..8ccb0caf 100755 --- a/data/rbot/plugins/markov.rb +++ b/data/rbot/plugins/markov.rb @@ -365,9 +365,12 @@ class MarkovPlugin < Plugin end end - def clean_str(s) - str = s.dup - str.gsub!(/^\S+[:,;]/, "") + def clean_message(m) + str = m.plainmessage.dup + str =~ /^(\S+)([:,;])/ + if $1 and m.target.is_a? Irc::Channel and m.target.user_nicks.include? $1.downcase + str.gsub!(/^(\S+)([:,;])\s+/, "") + end str.gsub!(/\s{2,}/, ' ') # fix for two or more spaces return str.strip end @@ -533,7 +536,7 @@ class MarkovPlugin < Plugin def random_markov(m, message) return unless should_talk(m) - words = clean_str(message).split(/\s+/) + words = clean_message(m).split(/\s+/) if words.length < 2 line = generate_string words.first, nil @@ -601,7 +604,7 @@ class MarkovPlugin < Plugin end random_markov(m, message) unless readonly? m or m.replied? - learn message + learn clean_message(m) end @@ -634,7 +637,7 @@ class MarkovPlugin < Plugin def learn_line(message) # debug "learning #{message.inspect}" - wordlist = clean_str(message).split(/\s+/).reject do |w| + wordlist = message.split(/\s+/).reject do |w| @bot.config['markov.ignore_patterns'].map do |pat| w =~ Regexp.new(pat.to_s) end.select{|v| v}.size != 0 -- cgit v1.2.3