54 lines
1.1 KiB
Go
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
|
|
}
|