From 371164ab9d055faac44442b2030e07b9959eeb90 Mon Sep 17 00:00:00 2001 From: DBT Date: Fri, 27 Feb 2026 03:33:20 +0000 Subject: [PATCH] feishu: harden channel action handling and align with manager capabilities --- pkg/channels/feishu.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pkg/channels/feishu.go b/pkg/channels/feishu.go index 5a8319f..f4827b2 100644 --- a/pkg/channels/feishu.go +++ b/pkg/channels/feishu.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + "strings" "sync" "time" @@ -27,6 +28,15 @@ type FeishuChannel struct { runCancel cancelGuard } +func (c *FeishuChannel) SupportsAction(action string) bool { + switch strings.ToLower(strings.TrimSpace(action)) { + case "", "send": + return true + default: + return false + } +} + func NewFeishuChannel(cfg config.FeishuConfig, bus *bus.MessageBus) (*FeishuChannel, error) { base := NewBaseChannel("feishu", cfg, bus, cfg.AllowFrom) @@ -94,6 +104,10 @@ func (c *FeishuChannel) Send(ctx context.Context, msg bus.OutboundMessage) error if msg.ChatID == "" { return fmt.Errorf("chat ID is empty") } + action := strings.ToLower(strings.TrimSpace(msg.Action)) + if action != "" && action != "send" { + return fmt.Errorf("unsupported feishu action: %s", action) + } payload, err := json.Marshal(map[string]string{"text": msg.Content}) if err != nil {