diff --git a/platform/dingtalk/dingtalk.go b/platform/dingtalk/dingtalk.go index 9a8b0dd..87388ac 100644 --- a/platform/dingtalk/dingtalk.go +++ b/platform/dingtalk/dingtalk.go @@ -181,9 +181,16 @@ func (p *Platform) Start(handler core.MessageHandler) error { default: } - if err := p.streamClient.Start(ctx); err != nil { - slog.Warn("dingtalk: stream disconnected, reconnecting", "error", err) - } + func() { + defer func() { + if r := recover(); r != nil { + slog.Error("dingtalk: stream panic, reconnecting", "recover", r) + } + }() + if err := p.streamClient.Start(ctx); err != nil { + slog.Warn("dingtalk: stream disconnected, reconnecting", "error", err) + } + }() // Brief pause before reconnecting to avoid tight loop on persistent failures. select {