Hi,
one of the possibilities is the following. Note that is almost the same as tidy_trax example, but with a bit more error checking, and shorter code:
on *@!:JOIN:#: $+(.timer,idle,$chan,$nick) 1 300 KickIdler $chan $nick
on *:TEXT:*:#: if $timer($+(idle,$chan,$nick)) { $+(.timer,idle,$chan,$nick) off }
alias KickIdler if (($me isop $1) || ($me ishop $1)) && ($2 ison $1) { kick $1 $2 Start talking! }
As it is possible that u are deoped at some time while there are still timers running, the alias KickIdler checks to see if you are an op or hop. Note that the ON DEOP event could be used, so that it would stop all timers involving idlers, however, I chose to not use this option, as I assume that you'll get oped again fast, after a possible deop (due to whatever reason).
The alias also checks if the nick is still on the channel. Cuz it is possible that a nick parts or quits, before the timer is triggered, thus it would result in the script trying to kick a nick that is not on the channel anymore.
Hope this works out for you,
Greetz
Edit: to the original poster, i deleted my first reply, as my script was more or less the same as tidy_trax's...however I did decide to post now, cuz of the reasons mentioned in the introduction.