@@ -63,54 +63,6 @@ type MessageItem struct {
6363 } `json:"mentions"`
6464}
6565
66- func (c * LarkClient ) GetMessage (ctx context.Context , messageID string ) (* MessageItem , error ) {
67- path := "/open-apis/im/v1/messages/" + messageID
68- resp , err := c .doJSON (ctx , "GET" , path , nil )
69- if err != nil {
70- return nil , err
71- }
72- if resp .Code != 0 {
73- return nil , fmt .Errorf ("get message: code=%d msg=%s" , resp .Code , resp .Msg )
74- }
75- var data struct {
76- Items []MessageItem `json:"items"`
77- }
78- if err := json .Unmarshal (resp .Data , & data ); err != nil {
79- return nil , fmt .Errorf ("unmarshal MessageItem: %w" , err )
80- }
81- if len (data .Items ) == 0 {
82- return nil , fmt .Errorf ("message %s not found" , messageID )
83- }
84- return & data .Items [0 ], nil
85- }
86-
87- func (c * LarkClient ) ListMessages (ctx context.Context , containerIDType , containerID string , pageSize int , pageToken string ) ([]MessageItem , string , error ) {
88- path := fmt .Sprintf ("/open-apis/im/v1/messages?container_id_type=%s&container_id=%s" ,
89- url .QueryEscape (containerIDType ), url .QueryEscape (containerID ))
90- if pageSize > 0 {
91- path += fmt .Sprintf ("&page_size=%d" , pageSize )
92- }
93- if pageToken != "" {
94- path += "&page_token=" + pageToken
95- }
96-
97- resp , err := c .doJSON (ctx , "GET" , path , nil )
98- if err != nil {
99- return nil , "" , err
100- }
101- if resp .Code != 0 {
102- return nil , "" , fmt .Errorf ("list messages: code=%d msg=%s" , resp .Code , resp .Msg )
103- }
104- var data struct {
105- Items []MessageItem `json:"items"`
106- PageToken string `json:"page_token"`
107- HasMore bool `json:"has_more"`
108- }
109- if err := json .Unmarshal (resp .Data , & data ); err != nil {
110- return nil , "" , fmt .Errorf ("unmarshal ListMessages response: %w" , err )
111- }
112- return data .Items , data .PageToken , nil
113- }
11466
11567// --- IM API: Images ---
11668
@@ -167,6 +119,59 @@ func (c *LarkClient) UploadFile(ctx context.Context, data io.Reader, fileName, f
167119
168120// --- IM API: Get Message ---
169121
122+ // GetMessage retrieves a message by ID.
123+ // Lark API: GET /open-apis/im/v1/messages/{message_id}
124+ func (c * LarkClient ) GetMessage (ctx context.Context , messageID string ) (* MessageItem , error ) {
125+ path := "/open-apis/im/v1/messages/" + messageID
126+ resp , err := c .doJSON (ctx , "GET" , path , nil )
127+ if err != nil {
128+ return nil , err
129+ }
130+ if resp .Code != 0 {
131+ return nil , fmt .Errorf ("get message: code=%d msg=%s" , resp .Code , resp .Msg )
132+ }
133+ var data struct {
134+ Items []MessageItem `json:"items"`
135+ }
136+ if err := json .Unmarshal (resp .Data , & data ); err != nil {
137+ return nil , fmt .Errorf ("unmarshal MessageItem: %w" , err )
138+ }
139+ if len (data .Items ) == 0 {
140+ return nil , fmt .Errorf ("message %s not found" , messageID )
141+ }
142+ return & data .Items [0 ], nil
143+ }
144+
145+ // ListMessages retrieves all messages from a container (e.g. "thread").
146+ // Lark API: GET /open-apis/im/v1/messages
147+ func (c * LarkClient ) ListMessages (ctx context.Context , containerIDType , containerID string , pageSize int , pageToken string ) ([]MessageItem , string , error ) {
148+ path := fmt .Sprintf ("/open-apis/im/v1/messages?container_id_type=%s&container_id=%s" ,
149+ url .QueryEscape (containerIDType ), url .QueryEscape (containerID ))
150+ if pageSize > 0 {
151+ path += fmt .Sprintf ("&page_size=%d" , pageSize )
152+ }
153+ if pageToken != "" {
154+ path += "&page_token=" + pageToken
155+ }
156+
157+ resp , err := c .doJSON (ctx , "GET" , path , nil )
158+ if err != nil {
159+ return nil , "" , err
160+ }
161+ if resp .Code != 0 {
162+ return nil , "" , fmt .Errorf ("list messages: code=%d msg=%s" , resp .Code , resp .Msg )
163+ }
164+ var data struct {
165+ Items []MessageItem `json:"items"`
166+ PageToken string `json:"page_token"`
167+ HasMore bool `json:"has_more"`
168+ }
169+ if err := json .Unmarshal (resp .Data , & data ); err != nil {
170+ return nil , "" , fmt .Errorf ("unmarshal ListMessages response: %w" , err )
171+ }
172+ return data .Items , data .PageToken , nil
173+ }
174+
170175
171176// --- IM API: Message Resources ---
172177
0 commit comments