I've been playing around with trying to have a setable response time in minutes instead of only a few seconds. The most I could get HAL idle for was 15 seconds.
BTW, I also found that you have to shut down the Ultra Hal Assistant program first, then restart it for the changes to take effect.
I did find the reason Hal keeps saying you're repeating yourself. Anytime you don't say anything, the string passed is "". So if you don't say anything twice in a row, then Hal thinks you've just said "" yet again.

To fix this:
In the area where it says:
'RESPOND: USER REPEATING
'If the user says the same thing more than once in a row, Hal will point this out.
Set it up like this:
'RESPOND: USER REPEATING
'If the user says the same thing more than once in a row, Hal will point this out.
'However, if user said "" that means the user said nothing so Hal ignores it. If
'using an Auto Idle code, then Hal will not accuse the user of repeating themselves.
If InStr(UserSentence, "") > 0 Then
GetResponse = ""
Else
If Trim(UCase(UserSentence)) = Trim(UCase(PrevUserSent)) Then
GetResponse = GetResponse & HalBrain.ChooseSentenceFromFile(WorkingDir & "userrepeat.brn") & VbCrLf
DebugInfo = DebugInfo & "The user has said the same thing twice in a row and a comment has been made about it: " & GetResponse & VbCrLf
End If
End If
So if you don't say anything at all twice or more times in the row, then he will say something else other than accusing you of repeating yourself. But if you do say something, he'll respond as he normally would. Note that if you just press the ENTER key, he'll still say "Please say something." Also note that you'll need to have added the auto-idle code previously posted in this thread in order to notice these changes.
Don't forget to shut down Ultra Hal Assistant and then restart the program again after making these changes.