X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Fkeywords.rb;h=5ed5256544a7e4e32a30e4901fccdb4b04d0c66b;hb=9a565bfd48c59ac9c1b37d5afe9b8640889632ff;hp=d440e6e6e9064b44613be80e41971d2c3b5950e4;hpb=6388aad7c5640ac3b8cbc5b6f28df76dd47c8f8c;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/keywords.rb b/data/rbot/plugins/keywords.rb index d440e6e6..5ed52565 100644 --- a/data/rbot/plugins/keywords.rb +++ b/data/rbot/plugins/keywords.rb @@ -443,14 +443,25 @@ class Keywords < Plugin # forget one of the dynamic keywords def keyword_forget(m, key) - if(@keywords.has_key?(key)) - @keywords.delete(key) + if @keywords.delete(key) m.okay else m.reply _("couldn't find keyword %{key}" % { :key => key }) 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 @@ -490,6 +501,8 @@ class Keywords < Plugin 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*$/