in the bot definition topic where harry has
$control_main = ~control
add
$control_pre = ~precontrol (or whatever you want to name your topic).
An example precontrol topic is
topic: ~precontrol system []
t: $$starttopic = %topic
$$startvalue = 0
etc. These will all execute once before the first volley is processed.
I’m not sure I understand your second question. Your control script (HARRY) currently calls rejoinders, responders from various areas driven by current topic or keyword and gambits in the same way. If you want to ONLY go to a specific topic, you would replace that logic with
if (%response == 0) {nofail(TOPIC respond(~yourtopic))}
if (%response == 0) {nofail(TOPIC gambit(~yourtopic))}
or its equivalent. For example you could have the last responder in ~yourtopic do the thing that calls a gambit instead, like this:
u: () keep() gambit(~)
then you wouldn’t need the control script call to the gambit.
As for how to pass input thru unchanged, if you know in advance you want to do this ALL THE TIME, you just set $token = 0 in your bot definition. If you discover you want to do this on the fly (as I do when I know or realize the user is going to provide his user name), you can set the $token to 0, do a RETRY(SENTENCE) to force the current processing to fail, it will retry using the new token value, and when you get to your pre-control script you can reset it back to default.