Sorry that I cannot be of more help than this but:
On certain networks I'm pretty sure that there's an 'append' and a 'prepend' topic command which can do some of what you wanted. For e.g., '.TOPICAPPEND' or is it '.APPENDTOPIC', regardless-- if you use one of those commands with 'text' after it, it would add that 'text' at the end of the current topic without changing or deleting anything that's currently there already; it just adds to it. The same thing applies to "prepend" except it would add that text to the beginning of the current topic without changing or deleting anything that's currently there.
Now, I'm not 100% percent sure which combination is the correct one but I know one of them will work.
Hope this helps somewhat.
You should check out the ChanServ/NickServ/BotServ/HostServ etc.. etc.. commands of the network(s) that you frequent to find out more information on which are available to you.
bind pub o|o "!tadd" topic:append
bind bub o|o "!tdel" topic:remove
# Appends a text to the current topic
proc topic:append {nick uhost handle chan text} {
set topic "[topic $chan] $text"
putserv "TOPIC $chan :$topic"
return 0
}
# Removes a text from a topic, whenever the text
# is located in the topic
proc topic:remove {nick uhost handle chan text} {
set topic [topic $chan]
regsub -- $text $topic "" topic
putserv "TOPIC $chan :[string trim $topic]"
return 0
}