X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Fnickrecover.rb;h=ed3c8708fc560ebadabc68bef6f6f45040bfe556;hb=41ea4232df0ed0b3f922b0476444ca8e38f3301f;hp=e6e56b8754bddd4611d65a38ea15c5393221c57e;hpb=965785ca3a01229f996583a677d06a2087590530;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/nickrecover.rb b/data/rbot/plugins/nickrecover.rb index e6e56b87..ed3c8708 100644 --- a/data/rbot/plugins/nickrecover.rb +++ b/data/rbot/plugins/nickrecover.rb @@ -43,23 +43,44 @@ class NickRecoverPlugin < Plugin @bot.wanted_nick end + def has_nick? + @bot.nick.downcase == wanted_nick.downcase + end + + def recover + @bot.nickchg wanted_nick + end + def stop_recovery - @bot.timer.remove(@recovery) if @recovery + begin + @bot.timer.remove(@recovery) if @recovery + ensure + @recovery = nil + end end def start_recovery(time=self.poll_time) if @recovery - @bot.timer.reschedule(@recovery, poll_time) - else - @recovery = @bot.timer.add(time) { @bot.nickchg wanted_nick } + begin + @bot.timer.reschedule(@recovery, poll_time) + return + rescue + @recovery=nil + end + end + @recovery = @bot.timer.add(time) do + has_nick? ? stop_recovery : recover end end def initialize super @recovery = nil - if enabled? and @bot.nick.downcase != wanted_nick - start_recovery + end + + def connect + if enabled? + start_recovery unless has_nick? end end @@ -74,6 +95,10 @@ class NickRecoverPlugin < Plugin end end + def cleanup + stop_recovery + end + end plugin = NickRecoverPlugin.new