Just filing a bug for future reference: services plugin doesn't retry identification if it fails with no response. it probably should. here's a snippet of my messages.log, when my bot was kicked off freenode due to some transient network outage and failing to respond to ping:
==============
WARNING 2011-01-08T01:09:26 supybot Ping sent at 2011-01-08T01:07:26 not replied to.
WARNING 2011-01-08T01:09:26 supybot Error message from freenode: Ping sent at 2011-01-08T01:07:26 not replied to.
INFO 2011-01-08T01:09:26 supybot Reconnecting to freenode.
INFO 2011-01-08T01:09:26 supybot Disconnect from chat.us.freenode.net:7000.
INFO 2011-01-08T01:09:26 supybot Sending PASS command, not logging the password.
INFO 2011-01-08T01:09:30 supybot Connecting to chat.us.freenode.net:7000.
INFO 2011-01-08T01:09:32 supybot Got 433: gribble is in use. Trying gribble.
INFO 2011-01-08T01:09:33 supybot Server hubbard.freenode.net has version ircd-seven-1.0.3
INFO 2011-01-08T01:09:33 supybot Got end of MOTD from hubbard.freenode.net
INFO 2011-01-08T01:09:33 supybot Sending ghost (current nick: gribble; ghosting: gribble)
INFO 2011-01-08T01:09:33 supybot Sending ghost (current nick: gribble; ghosting: gribble)
INFO 2011-01-08T01:09:36 supybot Holding JOIN to #gribble until identified.
WARNING 2011-01-08T01:09:37 supybot Refusing to send GHOST more than once every 60 seconds.
INFO 2011-01-08T01:11:27 supybot Sending ghost (current nick: gribble; ghosting: gribble)
INFO 2011-01-08T01:11:27 supybot Sending ghost (current nick: gribble; ghosting: gribble)
INFO 2011-01-08T01:11:27 supybot Sending ghost (current nick: gribble; ghosting: gribble)
INFO 2011-01-08T01:11:27 supybot Sending ghost (current nick: gribble`; ghosting: gribble)
INFO 2011-01-08T01:11:28 supybot Sending identify (current nick: gribble)
================
there was never a response to the identify... and the bot remained unidentified on the network, until I came by and took manual action. maybe services should retry at interval, when there's no response to identify?