PicoBot/skills/lark-im/references/lark-im-threads-messages-list.md
ooodc a7883dbed9 refactor(todo): 重构待办事项管理逻辑及更新状态规则
- 移除 TodoItem 中的 priority、created_at 和 updated_at 字段
- 强制每个任务都必须有唯一 id,且由用户负责生成
- 修改合并模式逻辑,merge=true 下保留未提及的旧任务
- 支持已完成和已取消任务重新激活(状态改回 pending 或 in_progress)
- 禁止 in_progress 状态退回到 pending,必须标记为 completed 或 cancelled
- 优化状态转换校验,允许特定状态间合法切换
- 简化任务变更消息,移除详细的新增/更新/移除统计
- 更新文档和示例,明确 id 必须由用户生成和使用
- 修复和补充测试,增强状态转换和合并模式验证
- 调整任务时间戳生成逻辑,统一使用当前时间及索引
- 该变更提供更合理的任务状态机械及管理模式,提升稳定性和易用性
2026-06-13 09:22:33 +08:00

5.8 KiB

im +threads-messages-list

Prerequisite: Read ../lark-shared/SKILL.md first to understand authentication, global parameters, and safety rules.

Fetch the reply message list inside a thread. When im +chat-messages-list returns messages that include a thread_id field, use this command to inspect all replies in that thread.

By default each reply also carries a reactions block (counts + details from im.reactions.batch_query) when the server has reactions for it, and update_time for messages that were actually edited. Pass --no-reactions to skip the extra round-trip. Pass --download-resources to additionally download message resources (image/file/audio/video/media + post-embedded, excluding stickers) into ./lark-im-resources/ and attach a resources block — off by default, no extra requests when omitted. See message enrichment for the full contract.

This skill maps to the shortcut: lark-cli im +threads-messages-list (internally calls GET /open-apis/im/v1/messages with container_id_type=thread to fetch thread messages).

Commands

# Get thread replies (ascending by time by default, table output)
lark-cli im +threads-messages-list --thread omt_xxx

# Reverse chronological order (latest first)
lark-cli im +threads-messages-list --thread omt_xxx --order desc

# Control page size
lark-cli im +threads-messages-list --thread omt_xxx --page-size 20

# Pagination
lark-cli im +threads-messages-list --thread omt_xxx --page-token <PAGE_TOKEN>

# Output format options
lark-cli im +threads-messages-list --thread omt_xxx --format pretty
lark-cli im +threads-messages-list --thread omt_xxx --format table
lark-cli im +threads-messages-list --thread omt_xxx --format csv

# View as a bot
lark-cli im +threads-messages-list --thread omt_xxx --as bot

# Preview the request without executing it
lark-cli im +threads-messages-list --thread omt_xxx --dry-run

Parameters

Parameter Required Description
--thread <id> Yes Thread ID (om_xxx or omt_xxx format)
--no-reactions No Skip auto-fetching the reactions block
--download-resources No Download message resources (image/file/audio/video/media + post-embedded, excluding stickers) into ./lark-im-resources/ and attach a resources block. Off by default
--order <order> No Sort order: asc (default) / desc
--page-size <n> No Number of items per page (default 50, range 1-500)
--page-token <token> No Pagination token for the next page
--format <fmt> No Output format: json (default) / pretty / table / ndjson / csv
--as <identity> No Identity type: user (default) / bot
--dry-run No Print the request only, do not execute it

Core Constraints

1. Source of thread_id

thread_id (omt_xxx or om_xxx) comes from the thread_id field in results returned by im +chat-messages-list or im +messages-search. Do not guess a thread ID. Fetch messages first and use the returned value.

2. No time filtering support

Thread messages do not support start_time / end_time filtering because of Feishu API limitations. Use pagination and sort order to control the scope.

3. Pagination (has_more / page_token)

  • When the result includes has_more=true, use page_token to fetch the next page
  • If you need the complete thread, keep paginating; if you only need an overview, the first page is often enough
Scenario Recommended Parameters
Quickly inspect recent replies --order desc --page-size 10
Read the full thread in chronological order --order asc --page-size 50, then paginate as needed
Just confirm whether replies exist --order desc --page-size 1

Usage Scenarios

Scenario 1: Expand a thread discovered in group messages

# Step 1: Fetch group messages and find one that contains thread_id
lark-cli im +chat-messages-list --chat-id oc_xxx

# Step 2: Extract thread_id from the JSON output and fetch thread replies
lark-cli im +threads-messages-list --thread omt_xxx

Scenario 2: Paginate through a long thread

# First page
lark-cli im +threads-messages-list --thread omt_xxx

# If has_more=true is returned, continue with page_token
lark-cli im +threads-messages-list --thread omt_xxx --page-token <PAGE_TOKEN>

Resource Rendering

Thread replies are rendered into human-readable text. Image messages appear as placeholders such as [Image: img_xxx]; by default resource binaries are not downloaded.

Pass --download-resources to download every eligible resource (image/file/audio/video/media + post-embedded, excluding stickers) into ./lark-im-resources/ in one pass and attach a resources block to each reply (see message enrichment). Otherwise download individual resources manually through im +messages-resources-download (see lark-im-messages-resources-download).

Common Errors and Troubleshooting

Symptom Root Cause Solution
"Invalid thread ID format" thread_id does not start with om_ or omt_ Use a valid om_xxx or omt_xxx value
Empty thread result Wrong thread_id or no replies in the thread Confirm the thread_id came from im +chat-messages-list output
Permission denied The user is not authorized or is not a conversation member Make sure OAuth authorization is complete and the identity is a chat member

References