Give this a try..it's going at it in a different manner
Code:
 on *:input:*:{
  .timeractive 1 60 scon -at1 deop_and_part
}
alias -l deop_and_part {
  if ($me isop #dynasty_help) { mode #dynasty_help -o $me }
  if ($me isop #helpcom) { mode #helpcom -o $me }
  if ($me isop #dyn_staff) { mode #dyn_staff -o $me }
  if ($me isop #dyn_scripting) { mode #dyn_scripting -o $me }
  if ($me isop #xbc_opers) { mode #xbc_opers -o $me }
  if ($me ison #testing) { echo -a LEFT TESTING }
  ;if ($me ison #ascii_art) { part #ascii_art }
  if ($me ison #xbc_help) { part #xbc_help }
  if ($me ison #xbc_game) { part #xbc_game }
}
on me:*:join:#:{
  .timeractive 1 60 scon -at1 deop_and_part
}
 

When you join the first channel, the timer "active" gets set
Every channel that you join after that, resets the timer "active"
If you don't type anything for a period of 60 seconds, then the deop & part alias kicks in.
If you do type something, doesn't matter if it's in channel or pm, then the timer "active" gets reset.