I use a ON START event, similar to what is posted above. Difference is that I have it start a timer to run an alias. Also have function key aliases, so that I can skip the timer (start sooner) or cancel it (not connect at all). That way it's automated, but I have the option to make changes before connecting.

Something like this:
Code:
ON *:START:{
  var %t = 30
  echo -tag Starting in %t seconds, press SHIFT-F5 to ABORT or SHIFT-F8 to START now
  .timerStart 1 %t startup::run
}

alias sF5 {
  if ( $timer(Start) ) {
    .timerStart off
    echo -tag Timer Halted.
  }
}
alias sF8 {
  if ( $timer(Start) ) {
    .timerStart off
    echo -tag Starting now.
    .timer 1 0 startup::run
  }
}

alias startup::run {
  startup::connect (same params as /server command)
  startup::connect -m (same params as /server command)
}
alias startup::connect {
  echo -ts /!server $1-
  !server $1-
}


The benefit of the last bit is it shows you exactly what is being executed for the server command, so if something starts going wrong, you can go back and troubleshoot it.

Where you see 'startup::connect' inside the alias, treat that exactly like the /server command, using the same parameters. Don't include the '/server' command, only everything after it. As mentioned in the above post, use -m for all connections after the first. Or you could use it for all connections, and have the initial status window as a sort of 'root' window. Whatever floats your boat.