DJ, rather than checking if ($nick isop $chan) in every if line, just do one at the top.
on *:text:*:#:{
if ($nick isop $chan) {
if ($1 == !topic) {
topic $chan $2-
}
if ($1 == !op) {
mode $chan +o $2-
}
;etc.
}
}
and in the !-m line, you have { instead of (
You should also check if ($me isop $chan) or on @*
Edit: you have on :text::****:{, if someone used these in a pm, $chan would be $null. So just use # instead of .
Oh and you have { instead of ( in the !kick line too.