Never use a timer with user input without the safe alias, not that you should be using a timer here at all anyway. And always use the "n" switch for both $read and $readini. You also don't need to remini if you're going to writeini afterward.

Code:
on *:join:#: { if ($readini(Welcome.ini,n,Messages,$nick)) msg # $v1 }

on *:text:!welcome *:#: {
  if ($read(sreglist.txt,nw,$nick)) {
    if ($readini(Welcome.ini,n,Messages,$nick)) {
      msg # changed $nick $+ 's welcome message to " $+ $2- $+ "
    }
    else {
      msg # set $nick $+ 's welcome message to " $+ $2- $+ "
    }
    writeini Welcome.ini Messages $nick $2-
  }
}

alias safe return $!decode( $encode($1,m) ,m)