fix(dispatcher): avoid swallowing unmatched command handlers in whatsapp

This commit is contained in:
mingmxren 2026-03-01 02:37:44 +08:00
parent 09f467da8f
commit e06ae83c22
5 changed files with 7 additions and 6 deletions

View file

@ -280,5 +280,5 @@ func (c *WhatsAppChannel) tryHandleCommand(
})
}
return res.Matched
return res.Handled
}

View file

@ -12,7 +12,7 @@ func TestTryHandleCommand_UsesDispatcher(t *testing.T) {
called := false
ch.dispatcher = commands.DispatchFunc(func(context.Context, commands.Request) commands.Result {
called = true
return commands.Result{Matched: true}
return commands.Result{Matched: true, Handled: true}
})
handled := ch.tryHandleCommand(context.Background(), "/help", "chat1", "user1", "mid1")

View file

@ -14,7 +14,7 @@ func TestTryHandleCommand_UsesDispatcher(t *testing.T) {
called := false
ch.dispatcher = commands.DispatchFunc(func(context.Context, commands.Request) commands.Result {
called = true
return commands.Result{Matched: true}
return commands.Result{Matched: true, Handled: true}
})
handled := ch.tryHandleCommand(context.Background(), "/help", "chat1", "user1", "mid1")

View file

@ -422,7 +422,7 @@ func (c *WhatsAppNativeChannel) tryHandleCommand(
"error": res.Err.Error(),
})
}
return res.Matched
return res.Handled
}
func (c *WhatsAppNativeChannel) Send(ctx context.Context, msg bus.OutboundMessage) error {

View file

@ -17,6 +17,7 @@ type Request struct {
type Result struct {
Matched bool
Handled bool
Command string
Err error
}
@ -51,10 +52,10 @@ func (d *Dispatcher) Dispatch(ctx context.Context, req Request) Result {
continue
}
if def.Handler == nil {
return Result{Matched: true, Command: def.Name}
return Result{Matched: true, Handled: false, Command: def.Name}
}
err := def.Handler(ctx, req)
return Result{Matched: true, Command: def.Name, Err: err}
return Result{Matched: true, Handled: true, Command: def.Name, Err: err}
}
return Result{Matched: false}