Files
rss-to-feishu-next/internal/feishu/client.go
2026-01-19 02:10:24 -06:00

54 lines
1.1 KiB
Go

package feishu
import (
"context"
"encoding/json"
"fmt"
"github.com/google/uuid"
lark "github.com/larksuite/oapi-sdk-go/v3"
larkcore "github.com/larksuite/oapi-sdk-go/v3/core"
larkim "github.com/larksuite/oapi-sdk-go/v3/service/im/v1"
)
type Client struct {
larkClient *lark.Client
}
func NewClient(larkClient *lark.Client) *Client {
return &Client{larkClient: larkClient}
}
func (c *Client) SendMessageToChat(ctx context.Context, message, chatID string) error {
content := &MessageContent{
Text: message,
}
contentJson, err := json.Marshal(content)
if err != nil {
return err
}
contentString := string(contentJson)
req := larkim.NewCreateMessageReqBuilder().
ReceiveIdType("chat_id").
Body(larkim.NewCreateMessageReqBodyBuilder().
ReceiveId(chatID).
MsgType(`text`).
Content(contentString).
Uuid(uuid.New().String()).
Build()).
Build()
resp, err := c.larkClient.Im.V1.Message.Create(ctx, req)
if err != nil {
return err
}
if !resp.Success() {
fmt.Printf("logId: %s, error response: \n%s", resp.RequestId(), larkcore.Prettify(resp.CodeError))
return nil
}
return nil
}