on *:TEXT:*:#: {
  if ($1 == !listcmds) {
    var %listcmds.inc = 1
    msg $nick Listing Commands...
    while (%listcmds.inc <= $hget(cmd,0).item) {
      msg $nick $hget(cmd,%listcmds.inc).item
      inc %listcmds.inc
    }
  }
  if (! isin $2) {
    if ($1 == !Addcmd) && (! == $left($2,+1)) {
      hadd cmd $2 $3-
      hsave cmd cmd.hsh
    }
    if ($1 == !Delcmd) && (! == $left($2,+1)) {
      hdel cmd $2
      hsave cmd cmd.hsh
    }
  }  
  if (! isin $1) {
    var %hreplace = $hget(cmd,$1)
    if (hnick isin %hreplace) && (hchan isin %hreplace) {
      msg $chan $replace(%hreplace,hnick,$2,hchan,$active)
    }
    elseif (hnick isin %hreplace) {
      msg $chan $replace(%hreplace,hnick,$2)
    }
    elseif (hchan isin %hreplace) {
      msg $chan $replace(%hreplace,hchan,$chan)
    }
    else { msg $chan %hreplace }
  }
}
alias cmdlist {
  hmake cmd $?="How many items? 30 is average"
  hsave cmd cmd.hsh
}