# in case it couldn't be achieved.
class NickRecoverPlugin < Plugin
-
+
Config.register Config::IntegerValue.new('irc.nick_retry',
:default => 60, :valiedate => Proc.new { |v| v >= 0 },
:on_change => Proc.new do |bot, v|
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) do
- has_nick? ? stop_recovery : recover
+ 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