It appears your your problem is that, after a recovery from a netsplit where you're on a different server than NICKSERV, you get challenged again for your password. I also had this problem at a network where services kept on dying and had to be rebooted.
This code will put NICKSERV on your notify list, and will send your password to NICKSERV when nickserv 'joins'. This happens when you connect, and when nickserv rejoins after a netsplit, or if they reboot services. It often will take action before you even receive the message challenging you for your password.
1. make certain your notify list is enabled or none of this works:
/notify ON
2. add nickserv to your list:
/notify NICKSERV
3. add this code to a new remote script, or an existing one which does not already have the ON NOTIFY event. This will notify you when NICKSERV joins
It's a good idea to name this script something like DoNotShare.mrc because this will contain your NICKSERV password.
4. edit the script with the password for that network. You are using a different password at each network right?
Your services might need different syntax than I've shown here, but while the normal syntax for NICKSERV is "/nickserv identify password", if you have a 4th word, some networks assume that the 3rd word is the account for the password, which allows you to identify even if you're not on a registered password.
You can add/edit the lines for whichever networks you use. The string after the == is how that network identifies itself to the $network identifier, which you can see by pasting this into any editbox of that network while you're connected to it:
//echo -a $network
5. The only action in the notify list that's available is playing a sound or performing /whois so the code below can do a command for when NICKSERV connects/disconnects. The :UNOTIFY: code is optional, and activates when that nick quits. The NOTIFY and UNOTIFY events also trigger when someone changes nick, but NICKSERV is not likely to do that.
6. Because NICKSERV appears to 'join' when you connect, you can remove the semi-colon to un-comment the line mentioning uptime if you DO want this to send your password within 60 seconds of your joining the network, which might be a redundant clone of your server-list settings.
7. If you need to speak to CHANSERV the same way, you can remove the semi-colon and edit that command too.
ON *:NOTIFY:{
if ($nick == NICKSERV) {
; remove the next line's semi-colon if you DO want this done as you connect
; if ($uptime(server,3) < 60) return
if ($network == libera.chat) nickserv identify accountname hunter2
if ($network == Rizon ) nickserv identify accountname password2
}
if ($nick == CHANSERV) {
; remove the next line's semi-colon if you DO want this done as you connect
; if ($uptime(server,3) < 60) return
; if ($network == Rizon ) chanserv identify #channelname password3
}
}
ON *:UNOTIFY:{
if ($nick == NICKSERV) {
var %i 1
while ($chan(%i)) { echo -g # NICKSERV is offline at $asctime | inc %i }
}
}