yes because on ircx style servers keys for channels are made by //mode # prop OWNER <key>.So then that would let you store a key in a variable or a hash table to be called later. You see those keys from the raw prop:*: event.
Code:
raw prop:*:{
  if ($2 == ownerkey) { haltdef | unset %okey. |  echo $1  $xnick1(prop) $colon $+ $col1 ownerkey by $nick : $+ $col1 $3 | .set %okey. [ $+ [ $1 ] ] $3 }
  if ($3 == $null) || ($3 == :) { prop $1 ownerkey $rkey | kick $1 $nick $colon key clear?  }
  if ($2 == hostkey) { haltdef | unset %hkey. | echo $1 prop : $+ $col1 hostkey by $nick : $+  $3 | .set %hkey. [ $+ [ $1 ] ] $3 }
  if ($2 == onjoin) { haltdef | echo $1 prop : $nick propped onjoin in $1 to " $+  $3- $+ " }
  if ($2 == onpart) { haltdef | echo $1 prop : $nick propped onpart in $1 to " $+  $3- $+ " }
}


after storing the key make a join event and check it with if (% [ $+ [ $chan ] $+ ] .okey != $null) /join #chan1,#chan2,#chan3


The key you're talking about shows up on the on MODE event so it is harder to catch. You would have to set it as a variable or put it in a hash table and try getting into the channels from there.

so you need to check on mode : if mode == -k { blah blah blah }
or u can use my method and just save them as variables then join.