Ok... You're missing pieces in your codes... I think you may want to review the help file.
Invalid:
/kick nick
Valid:
/kick chan nick
on @*:text:!kick *:#: {
if ($nick !isop $chan || $2 isop $chan || $2 == [color:red]Your nick[/color]) { return }
kick $chan $2
.notice $nick $knick has been kicked.
}
As for @... No, it doesn't mean only ops can use it. It means that it will only work if the BOT (or person with the script) is an op. The way you have it, it will trigger if anyone types the command as long as the bot is an op. It will not trigger if the bot is not an op. You definitely want @ in front because you'll get an error if the bot tries to kick someone when the bot isn't an op if you don't have the @ there. But, you need to include a check to see if the $nick is an op. I included one method above to show how.
You also don't need the ! prefix in an ON TEXT event because you can't trigger those yourself, anyhow.
Btw, for the opping script, you should also put in a check to see if the person SHOULD be opped. The way it is, anyone can become and op if they know the command. You should also have the @ on there like with the kick part so you don't get an error if the bot isn't an op.