you could always edit (alex' core quest) or create your own core codings... as if there's no other better built in way, then there is not another way other than this. If you go the command+function route, then it's a matter of creating the best code method you can (simpliest most efficient code possible).
here's how my code looks:
(this is a part of my battle function, so you'll have to adjust it and figure out how to get it to work for exits and their aliases)
<command name="fight">
<pattern>fight #text#</pattern>
<script>
battle_system (game.pov,text)
</script>
</command>
<function name="battle_system" parameters="self,text" type="boolean">
first_value = false
enemy = GetObject (text)
// Credit goes to Pertex, as he~she provided this code below to me
if (enemy = null) {
foreach (obj,AllObjects()) {
if (obj.alias=text) {
enemy = obj
}
}
}