+ # disconnect the bot from IRC, if connected, and then connect (again)
+ def reconnect(message=nil, too_fast=false)
+ # we will wait only if @last_rec was not nil, i.e. if we were connected or
+ # got disconnected by a network error
+ # if someone wants to manually call disconnect() _and_ reconnect(), they
+ # will have to take care of the waiting themselves
+ will_wait = !!@last_rec
+
+ if @socket.connected?
+ disconnect(message)
+ end
+
+ if will_wait
+ log "\n\nDisconnected\n\n"
+
+ quit if $interrupted > 0
+
+ log "\n\nWaiting to reconnect\n\n"
+ sleep @config['server.reconnect_wait']
+ sleep 10*@config['server.reconnect_wait'] if too_fast
+ end
+
+ connect
+ end
+