* First commit

This commit is contained in:
lxowalle
2026-02-04 19:06:13 +08:00
commit e17693b17c
57 changed files with 7994 additions and 0 deletions

70
pkg/channels/feishu.go Normal file
View File

@@ -0,0 +1,70 @@
package channels
import (
"context"
"fmt"
"log"
"github.com/sipeed/picoclaw/pkg/bus"
"github.com/sipeed/picoclaw/pkg/config"
)
type FeishuChannel struct {
*BaseChannel
config config.FeishuConfig
}
func NewFeishuChannel(cfg config.FeishuConfig, bus *bus.MessageBus) (*FeishuChannel, error) {
base := NewBaseChannel("feishu", cfg, bus, cfg.AllowFrom)
return &FeishuChannel{
BaseChannel: base,
config: cfg,
}, nil
}
func (c *FeishuChannel) Start(ctx context.Context) error {
log.Println("Feishu channel started")
c.setRunning(true)
return nil
}
func (c *FeishuChannel) Stop(ctx context.Context) error {
log.Println("Feishu channel stopped")
c.setRunning(false)
return nil
}
func (c *FeishuChannel) Send(ctx context.Context, msg bus.OutboundMessage) error {
if !c.IsRunning() {
return fmt.Errorf("feishu channel not running")
}
htmlContent := markdownToFeishuCard(msg.Content)
log.Printf("Feishu send to %s: %s", msg.ChatID, truncateString(htmlContent, 100))
return nil
}
func (c *FeishuChannel) handleIncomingMessage(data map[string]interface{}) {
senderID, _ := data["sender_id"].(string)
chatID, _ := data["chat_id"].(string)
content, _ := data["content"].(string)
log.Printf("Feishu message from %s: %s...", senderID, truncateString(content, 50))
metadata := make(map[string]string)
if messageID, ok := data["message_id"].(string); ok {
metadata["message_id"] = messageID
}
if userName, ok := data["sender_name"].(string); ok {
metadata["sender_name"] = userName
}
c.HandleMessage(senderID, chatID, content, nil, metadata)
}
func markdownToFeishuCard(markdown string) string {
return markdown
}