summaryrefslogtreecommitdiff
path: root/data/rbot/plugins/markov.rb
diff options
context:
space:
mode:
authorVoker57 <voker57@gmail.com>2010-01-26 01:55:00 +0300
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2010-01-26 09:11:04 +0100
commit66320ea8e89492b6815bcd4a2f942c7cd70afa44 (patch)
treef12309c569bce7116547b86f8bf4b66ae72af779 /data/rbot/plugins/markov.rb
parentdb8c68e8cf35b3bb3fcae63595726592687407c4 (diff)
markov: detect addressing-by-nick in channel
and filter it in smart way
Diffstat (limited to 'data/rbot/plugins/markov.rb')
-rwxr-xr-xdata/rbot/plugins/markov.rb15
1 files 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