There are several ways to go about this. One is using a timer, but that can be kinda hard when there's a lot of people in your channel. For not too many people, there's no problem. The code below will start a timer prompting the user's removal
everytime he sends text to a channel in any way. The kbnick alias is used so you can check if the user's still there when you want to kick him. You could of course disable timers when the user parts/quits/gets kicked, but this is simple enough. Just change the parts in blue.

Code:
on *:TEXT:*:[color:blue]#channelname[/color]: .timer [ $+ [ $nick ] ] 1 1800 kbnick $chan $nick
on *:ACTION:*:[color:blue]#channelname[/color]: .timer [ $+ [ $nick ] ] 1 1800 kbnick $chan $nick
on *:NOTICE:*:[color:blue]#channelname[/color]: .timer [ $+ [ $nick ] ] 1 1800 kbnick $chan $nick
[color:blue] [/color]
alias kbnick { if ($2 ison $1) && ($me isop $1) ban -ku60 $1 $2 3 Idle time exceeding 30 minutes. }


For bigger channels, it would perhaps be better (not easier) to manually store the last time someone sent text to the channel in a hash table, and then loop through that table every minute or so, removing those users that idled too long.

Of course the loop through the nicklist works too...


DALnet #Helpdesk
I hear and I forget. I see and I remember. I do and I understand. -Confucius