These are the only things in the topic? There are many caveats which could affect this implementation. The following will replace the text after the given tag, if the tag is not in the topic it will append it.

Code:
on *:text:!leader *:#:topic # $$game.topic(LE,$2-)
on *:text:!ee *:#:topic # $$game.topic(EE,$2-)
on *:text:!we1 *:#:topic # $$game.topic(WE1,$2-)
on *:text:!clear:#:.raw topic # :

alias game.topic {
  var %tag = $1, %value = $2-, %topic = $chan(#).topic
  var %regex = /(?<= $+ %tag $+ : )(?:.+?(?= \S+:)|.+$)/i
  if ($regex(%topic,%regex)) {
    return $regsubex(%topic,%regex,%value)
  }
  else return %topic %tag $+ : %value
}