That is mirc scripting not tcl. All you have done is change the on text events to tcl binds. which simply will not work.
First of all you must seperate binds from the code.. eg
bind pub m|m vhost my:vhostproc
proc my:vhostproc {nick host hand chan arg} {
your code here
}
A HUGE factor to realise is that tcl handles command arguments very differently, all arguements given with a command are stores in $arg not the $1 $2 $3- etc that mirc scripting uses.
Here is the first part to get you started, keep in mind this is very basic and untested. I highly suggest you RTFM : )
i have much difficulty understanding .tcl lol however from what i have seen im sure i could probably come up with the rest and also learn from it ty very much so for this however i have but just one question pertaining to this for instance using the !move command how would i make it so that if the user being moved is in #admins that the command would not proceed...
i apreciate all of your help ty very much for taking the time to help me learn this style of scripting
sorry i also forgot to mention that the fjoin and !move are only able to be done in the main room channels they usually use a variable how would that be done in .tcl for instance they would set the variable as %m.rooms and have all the main rooms listed on it