package main import ( "context" "fmt" "log" "rss-to-feishu-next/internal/config" "rss-to-feishu-next/internal/feishu" "rss-to-feishu-next/internal/net" "rss-to-feishu-next/internal/rss" "rss-to-feishu-next/internal/silicon" "strings" lark "github.com/larksuite/oapi-sdk-go/v3" ) func main() { cfg, err := config.LoadConfig() if err != nil { log.Fatal(err) } ctx := context.Background() netCli := net.NewClient() rssCli := rss.NewClient(netCli) siliconCli := silicon.NewClient(netCli) larkCli := lark.NewClient(cfg.Feishu.AppID, cfg.Feishu.AppSecret) feishuCli := feishu.NewClient(larkCli) messages, err := rssCli.FetchAllRss(ctx) if err != nil { panic(err) } for i := 0; i < len(messages); i++ { prompt := cfg.Subscribes[i].Prompt + "\n" + messages[i].Content model := cfg.Subscribes[i].Model resp, err := siliconCli.FetchModelResponse(ctx, prompt, model) if err != nil { panic(err) } var parts []string for _, item := range resp.Content { parts = append(parts, item.Text) } allContent := strings.Join(parts, "\n") message := fmt.Sprintf("%s\n%s\n%s", messages[i].Name, messages[i].Url, allContent) if err := feishuCli.SendMessageToChat(ctx, message, cfg.Feishu.ChatID); err != nil { panic(err) } } }