Config.register Config::IntegerValue.new('keyword.search_results',
:default => 3,
:desc => "How many search results to display at a time")
+ Config.register Config::ArrayValue.new('keyword.ignore_words',
+ :default => ["how", "that", "these", "they", "this", "what", "when", "where", "who", "why", "you"],
+ :desc => "A list of words that the bot should passively ignore.")
# create a new KeywordPlugin instance, associated to bot +bot+
def initialize
return false
end
+ # is +word+ a passively ignored keyword?
+ def ignored_word?(word)
+ @bot.config["keyword.ignore_words"].include?(word)
+ end
+
# m:: PrivMessage containing message info
# key:: key being queried
# quiet:: optional, if false, complain if +key+ is not found
end
end
+ # low-level keyword wipe command for when forget doesn't work
+ def keyword_wipe(m, key)
+ reg = @keywords.registry
+ reg.env.begin(reg) { |t, b|
+ b.delete_if { |k, v|
+ (k == key) && (m.reply "wiping keyword #{key} with stored value #{Marshal.restore(v)}")
+ }
+ t.commit
+ }
+ m.reply "done"
+ end
+
# export keywords to factoids file
def keyword_factoids_export
ar = Array.new
keyword_command(m, $1, $2, $3) if @bot.auth.allow?('keycmd', m.source, m.replyto)
when /^forget\s+(.+)$/
keyword_forget(m, $1) if @bot.auth.allow?('keycmd', m.source, m.replyto)
+ when /^wipe\s(.+)$/ # note that only one space is stripped, allowing removal of space-prefixed keywords
+ keyword_wipe(m, $1) if @bot.auth.allow?('keycmd', m.source, m.replyto)
when /^lookup\s+(.+)$/
keyword_lookup(m, $1) if @bot.auth.allow?('keyword', m.source, m.replyto)
when /^stats\s*$/
# TODO option to do if(m.message =~ /^(.*)$/, ie try any line as a
# keyword lookup.
if m.message =~ /^(.*\S)\s*\?\s*$/ and (m.address? or not @bot.config["keyword.address"])
- keyword_lookup m, $1, true if @bot.auth.allow?("keyword", m.source)
+ keyword_lookup m, $1, true if !ignored_word?($1) && @bot.auth.allow?("keyword", m.source)
elsif @bot.config["keyword.listen"] && (m.message =~ /^(.*?)\s+(is|are)\s+(.*)$/)
# TODO MUCH more selective on what's allowed here
- keyword_command m, $1, $2, $3, true if @bot.auth.allow?("keycmd", m.source)
+ keyword_command m, $1, $2, $3, true if !ignored_word?($1) && @bot.auth.allow?("keycmd", m.source)
end
end
end