bot.plugin['nickrecover'].stop_recovery
end
end, :requires_restart => false,
- :desc => _("Time in seconds to wait between attempts to recover the nick"))
+ :desc => _("Time in seconds to wait between attempts to recover the nick. set to 0 to disable nick recovery."))
+
+ def help(plugin,topic="")
+ [
+ _("the nickrecover plugin takes care of recovering the bot nick by trying to change nick until it succeeds."),
+ _("the plugin waits irc.nick_retry seconds between attempts."),
+ _("set irc.nick_retry to 0 to disable it.")
+ ].join(' ')
+ end
def enabled?
@bot.config['irc.nick_retry'] > 0
@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
end
end
+ def cleanup
+ stop_recovery
+ end
+
end
plugin = NickRecoverPlugin.new