I use something similar for myself, I changed it up a bit to match what you wanted since it was just some simple changes, take a look and see if you like it:
Code:
on *:input:query,#: {
  if ($left($1,1) == /) { 
    if (echo !isin $1) $1-
  }
  else {
    .msg $active $wordchange($$active,$$1-)
    echo -a $+($chr(91),$time,$chr(93) $chr(60),$userstatus($me,$active),$me,$chr(62)) $1- 
    halt
  }
}
alias userstatus {
  if ($1 isop $2) return $chr(64)
  elseif ($1 ishop $2) return $chr(37)
  elseif ($1 isvoice $2) return $chr(43)
  else return $null
}

alias -l wordchange {
  var %file words.ini
  var %topic $1
  var %string $2-
  var %sections $ini(%file,%topic,0)
  while (%sections) {
    var %section $ini(%file,%topic,%sections)
    if ($gettok(%string,%section,32)) { 
      var %item $readini(%file,%topic,%section) 
      var %string $replace(%string,%section,%item)
    }
    dec %sections
  }
  return %string
}

menu channel,query { 
  $iif($$active,Wordchange)
  .Add : writeini words.ini $$active $$?="What word are you using?" $$?="What word do you want to show?"
  .Copy over : copy.words $$active $$?="Where do you want to copy from? Example: #Nillen (chan) or Nillen (person)"
  .Remove one word : remini words.ini $$1 $$?="What word do you want to remove?"
  .Remove all for $$active : remini words.ini $$active
  .Remove all : write -c words.ini
}
alias -l copy.words { 
  var %file words.ini
  var %destination $1
  var %from $2
  var %sections $ini(%file,%from,0)
  while (%sections) {
    var %section $ini(%file,%from,%sections)
    var %item $readini(%file,%from,%section)
    writeini %file %destination %section %item
    dec %sections
  }
}


Nillens @ irc.twitch.tv
Nillen @ irc.rizon.net