@yandy0725/pi-lark 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -0
- package/README.zh.md +30 -0
- package/package.json +36 -0
- package/skills/lark-approval/SKILL.md +56 -0
- package/skills/lark-approval/references/lark-approval-initiate.md +196 -0
- package/skills/lark-approval/references/lark-approval-instance-form-control-parameters.md +606 -0
- package/skills/lark-approval/references/lark-approval-instance-value-sourcing.md +108 -0
- package/skills/lark-apps/SKILL.md +78 -0
- package/skills/lark-apps/references/lark-apps-access-scope-get.md +28 -0
- package/skills/lark-apps/references/lark-apps-access-scope-set.md +40 -0
- package/skills/lark-apps/references/lark-apps-cloud-dev.md +120 -0
- package/skills/lark-apps/references/lark-apps-create.md +40 -0
- package/skills/lark-apps/references/lark-apps-db-env-create.md +31 -0
- package/skills/lark-apps/references/lark-apps-db-execute.md +40 -0
- package/skills/lark-apps/references/lark-apps-db-table-get.md +29 -0
- package/skills/lark-apps/references/lark-apps-db-table-list.md +31 -0
- package/skills/lark-apps/references/lark-apps-env-pull.md +35 -0
- package/skills/lark-apps/references/lark-apps-git-credential.md +37 -0
- package/skills/lark-apps/references/lark-apps-html-publish.md +57 -0
- package/skills/lark-apps/references/lark-apps-init.md +37 -0
- package/skills/lark-apps/references/lark-apps-list.md +37 -0
- package/skills/lark-apps/references/lark-apps-local-dev.md +76 -0
- package/skills/lark-apps/references/lark-apps-release-create.md +30 -0
- package/skills/lark-apps/references/lark-apps-release-get.md +28 -0
- package/skills/lark-apps/references/lark-apps-release-list.md +31 -0
- package/skills/lark-apps/references/lark-apps-session-messages-list.md +53 -0
- package/skills/lark-apps/references/lark-apps-update.md +30 -0
- package/skills/lark-attendance/SKILL.md +57 -0
- package/skills/lark-base/SKILL.md +157 -0
- package/skills/lark-base/references/dashboard-block-data-config.md +350 -0
- package/skills/lark-base/references/formula-field-guide.md +737 -0
- package/skills/lark-base/references/lark-base-cell-value.md +153 -0
- package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +717 -0
- package/skills/lark-base/references/lark-base-dashboard.md +238 -0
- package/skills/lark-base/references/lark-base-data-analysis-sop.md +210 -0
- package/skills/lark-base/references/lark-base-data-query-guide.md +61 -0
- package/skills/lark-base/references/lark-base-data-query.md +452 -0
- package/skills/lark-base/references/lark-base-field-create.md +103 -0
- package/skills/lark-base/references/lark-base-field-json.md +489 -0
- package/skills/lark-base/references/lark-base-field-update.md +171 -0
- package/skills/lark-base/references/lark-base-form-detail.md +71 -0
- package/skills/lark-base/references/lark-base-form-questions-create.md +118 -0
- package/skills/lark-base/references/lark-base-form-questions-update.md +92 -0
- package/skills/lark-base/references/lark-base-form-submit.md +170 -0
- package/skills/lark-base/references/lark-base-record-batch-create.md +57 -0
- package/skills/lark-base/references/lark-base-record-batch-update.md +52 -0
- package/skills/lark-base/references/lark-base-record-history-list.md +43 -0
- package/skills/lark-base/references/lark-base-record-upsert.md +63 -0
- package/skills/lark-base/references/lark-base-role-guide.md +65 -0
- package/skills/lark-base/references/lark-base-view-set-filter.md +189 -0
- package/skills/lark-base/references/lark-base-workflow-guide.md +830 -0
- package/skills/lark-base/references/lark-base-workflow-schema.md +1071 -0
- package/skills/lark-base/references/lookup-field-guide.md +512 -0
- package/skills/lark-base/references/role-config.md +549 -0
- package/skills/lark-calendar/SKILL.md +137 -0
- package/skills/lark-calendar/references/lark-calendar-agenda.md +78 -0
- package/skills/lark-calendar/references/lark-calendar-create.md +106 -0
- package/skills/lark-calendar/references/lark-calendar-freebusy.md +124 -0
- package/skills/lark-calendar/references/lark-calendar-meeting.md +40 -0
- package/skills/lark-calendar/references/lark-calendar-room-find.md +113 -0
- package/skills/lark-calendar/references/lark-calendar-rsvp.md +42 -0
- package/skills/lark-calendar/references/lark-calendar-schedule-meeting.md +265 -0
- package/skills/lark-calendar/references/lark-calendar-search-event.md +29 -0
- package/skills/lark-calendar/references/lark-calendar-suggestion.md +125 -0
- package/skills/lark-calendar/references/lark-calendar-update.md +105 -0
- package/skills/lark-contact/SKILL.md +59 -0
- package/skills/lark-contact/references/lark-contact-get-user.md +19 -0
- package/skills/lark-contact/references/lark-contact-search-user.md +124 -0
- package/skills/lark-doc/SKILL.md +79 -0
- package/skills/lark-doc/references/lark-doc-create.md +79 -0
- package/skills/lark-doc/references/lark-doc-fetch.md +138 -0
- package/skills/lark-doc/references/lark-doc-md.md +76 -0
- package/skills/lark-doc/references/lark-doc-media-download.md +50 -0
- package/skills/lark-doc/references/lark-doc-media-insert.md +114 -0
- package/skills/lark-doc/references/lark-doc-media-preview.md +41 -0
- package/skills/lark-doc/references/lark-doc-resource-cover.md +70 -0
- package/skills/lark-doc/references/lark-doc-update.md +259 -0
- package/skills/lark-doc/references/lark-doc-whiteboard.md +154 -0
- package/skills/lark-doc/references/lark-doc-xml.md +181 -0
- package/skills/lark-doc/references/style/lark-doc-create-workflow.md +59 -0
- package/skills/lark-doc/references/style/lark-doc-style.md +86 -0
- package/skills/lark-doc/references/style/lark-doc-update-workflow.md +55 -0
- package/skills/lark-drive/SKILL.md +215 -0
- package/skills/lark-drive/references/lark-drive-add-comment.md +193 -0
- package/skills/lark-drive/references/lark-drive-apply-permission.md +77 -0
- package/skills/lark-drive/references/lark-drive-comment-location.md +193 -0
- package/skills/lark-drive/references/lark-drive-comments-guide.md +72 -0
- package/skills/lark-drive/references/lark-drive-cover.md +79 -0
- package/skills/lark-drive/references/lark-drive-create-folder.md +73 -0
- package/skills/lark-drive/references/lark-drive-create-shortcut.md +103 -0
- package/skills/lark-drive/references/lark-drive-delete.md +79 -0
- package/skills/lark-drive/references/lark-drive-download.md +31 -0
- package/skills/lark-drive/references/lark-drive-export-download.md +50 -0
- package/skills/lark-drive/references/lark-drive-export.md +145 -0
- package/skills/lark-drive/references/lark-drive-files-list.md +158 -0
- package/skills/lark-drive/references/lark-drive-import.md +170 -0
- package/skills/lark-drive/references/lark-drive-inspect.md +50 -0
- package/skills/lark-drive/references/lark-drive-member-add.md +66 -0
- package/skills/lark-drive/references/lark-drive-move.md +120 -0
- package/skills/lark-drive/references/lark-drive-permission-guide.md +41 -0
- package/skills/lark-drive/references/lark-drive-preview.md +87 -0
- package/skills/lark-drive/references/lark-drive-pull.md +137 -0
- package/skills/lark-drive/references/lark-drive-push.md +162 -0
- package/skills/lark-drive/references/lark-drive-reactions.md +113 -0
- package/skills/lark-drive/references/lark-drive-search.md +269 -0
- package/skills/lark-drive/references/lark-drive-secure-label.md +52 -0
- package/skills/lark-drive/references/lark-drive-status.md +137 -0
- package/skills/lark-drive/references/lark-drive-task-result.md +302 -0
- package/skills/lark-drive/references/lark-drive-upload.md +101 -0
- package/skills/lark-drive/references/lark-drive-version-delete.md +38 -0
- package/skills/lark-drive/references/lark-drive-version-get.md +71 -0
- package/skills/lark-drive/references/lark-drive-version-history.md +73 -0
- package/skills/lark-drive/references/lark-drive-version-revert.md +35 -0
- package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-analysis.md +249 -0
- package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-discovery.md +253 -0
- package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-execution.md +200 -0
- package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-planning.md +336 -0
- package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize-rollback.md +308 -0
- package/skills/lark-drive/references/lark-drive-workflow-knowledge-organize.md +226 -0
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance-commands.md +168 -0
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance-outputs.md +424 -0
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance.md +207 -0
- package/skills/lark-drive/references/lark-drive-workflow.md +130 -0
- package/skills/lark-event/SKILL.md +154 -0
- package/skills/lark-event/references/lark-event-im.md +87 -0
- package/skills/lark-event/references/lark-event-minutes.md +54 -0
- package/skills/lark-event/references/lark-event-task.md +78 -0
- package/skills/lark-event/references/lark-event-vc.md +94 -0
- package/skills/lark-event/references/lark-event-whiteboard.md +67 -0
- package/skills/lark-im/SKILL.md +247 -0
- package/skills/lark-im/references/lark-im-card-action-reply.md +175 -0
- package/skills/lark-im/references/lark-im-chat-create.md +162 -0
- package/skills/lark-im/references/lark-im-chat-identity.md +55 -0
- package/skills/lark-im/references/lark-im-chat-list.md +166 -0
- package/skills/lark-im/references/lark-im-chat-messages-list.md +157 -0
- package/skills/lark-im/references/lark-im-chat-search.md +142 -0
- package/skills/lark-im/references/lark-im-chat-update.md +84 -0
- package/skills/lark-im/references/lark-im-feed-group-list-item.md +68 -0
- package/skills/lark-im/references/lark-im-feed-group-list.md +65 -0
- package/skills/lark-im/references/lark-im-feed-group-query-item.md +44 -0
- package/skills/lark-im/references/lark-im-feed-groups.md +452 -0
- package/skills/lark-im/references/lark-im-feed-shortcut-create.md +97 -0
- package/skills/lark-im/references/lark-im-feed-shortcut-list.md +103 -0
- package/skills/lark-im/references/lark-im-feed-shortcut-remove.md +48 -0
- package/skills/lark-im/references/lark-im-flag-cancel.md +67 -0
- package/skills/lark-im/references/lark-im-flag-create.md +67 -0
- package/skills/lark-im/references/lark-im-flag-list.md +100 -0
- package/skills/lark-im/references/lark-im-message-enrichment.md +54 -0
- package/skills/lark-im/references/lark-im-messages-mget.md +99 -0
- package/skills/lark-im/references/lark-im-messages-reply.md +267 -0
- package/skills/lark-im/references/lark-im-messages-resources-download.md +94 -0
- package/skills/lark-im/references/lark-im-messages-search.md +234 -0
- package/skills/lark-im/references/lark-im-messages-send.md +267 -0
- package/skills/lark-im/references/lark-im-reactions.md +299 -0
- package/skills/lark-im/references/lark-im-threads-messages-list.md +115 -0
- package/skills/lark-mail/SKILL.md +287 -0
- package/skills/lark-mail/assets/templates/job-application--resume.html +33 -0
- package/skills/lark-mail/assets/templates/newsletter--weekly-brief.html +50 -0
- package/skills/lark-mail/assets/templates/research--market-report.html +256 -0
- package/skills/lark-mail/assets/templates/weekly--personal-report.html +43 -0
- package/skills/lark-mail/assets/templates/weekly--team-report.html +9 -0
- package/skills/lark-mail/references/lark-mail-calendar-invite.md +36 -0
- package/skills/lark-mail/references/lark-mail-decline-receipt.md +115 -0
- package/skills/lark-mail/references/lark-mail-draft-create.md +127 -0
- package/skills/lark-mail/references/lark-mail-draft-edit.md +404 -0
- package/skills/lark-mail/references/lark-mail-forward.md +239 -0
- package/skills/lark-mail/references/lark-mail-html.md +333 -0
- package/skills/lark-mail/references/lark-mail-lint-html.md +243 -0
- package/skills/lark-mail/references/lark-mail-message.md +233 -0
- package/skills/lark-mail/references/lark-mail-messages.md +108 -0
- package/skills/lark-mail/references/lark-mail-recall.md +66 -0
- package/skills/lark-mail/references/lark-mail-recipient-search.md +59 -0
- package/skills/lark-mail/references/lark-mail-reply-all.md +213 -0
- package/skills/lark-mail/references/lark-mail-reply.md +249 -0
- package/skills/lark-mail/references/lark-mail-rules.md +31 -0
- package/skills/lark-mail/references/lark-mail-send-as.md +44 -0
- package/skills/lark-mail/references/lark-mail-send-receipt.md +120 -0
- package/skills/lark-mail/references/lark-mail-send-status.md +46 -0
- package/skills/lark-mail/references/lark-mail-send.md +222 -0
- package/skills/lark-mail/references/lark-mail-share-to-chat.md +87 -0
- package/skills/lark-mail/references/lark-mail-signature.md +98 -0
- package/skills/lark-mail/references/lark-mail-template-create.md +129 -0
- package/skills/lark-mail/references/lark-mail-template-update.md +150 -0
- package/skills/lark-mail/references/lark-mail-template.md +54 -0
- package/skills/lark-mail/references/lark-mail-thread.md +111 -0
- package/skills/lark-mail/references/lark-mail-triage.md +131 -0
- package/skills/lark-mail/references/lark-mail-watch.md +94 -0
- package/skills/lark-markdown/SKILL.md +69 -0
- package/skills/lark-markdown/references/lark-markdown-create.md +94 -0
- package/skills/lark-markdown/references/lark-markdown-diff.md +156 -0
- package/skills/lark-markdown/references/lark-markdown-fetch.md +79 -0
- package/skills/lark-markdown/references/lark-markdown-overwrite.md +85 -0
- package/skills/lark-markdown/references/lark-markdown-patch.md +160 -0
- package/skills/lark-minutes/SKILL.md +192 -0
- package/skills/lark-minutes/references/lark-minutes-detail.md +62 -0
- package/skills/lark-minutes/references/lark-minutes-download.md +137 -0
- package/skills/lark-minutes/references/lark-minutes-search.md +204 -0
- package/skills/lark-minutes/references/lark-minutes-speaker-replace.md +107 -0
- package/skills/lark-minutes/references/lark-minutes-summary.md +122 -0
- package/skills/lark-minutes/references/lark-minutes-todo.md +138 -0
- package/skills/lark-minutes/references/lark-minutes-update.md +41 -0
- package/skills/lark-minutes/references/lark-minutes-upload.md +104 -0
- package/skills/lark-note/SKILL.md +94 -0
- package/skills/lark-note/references/lark-note-detail.md +26 -0
- package/skills/lark-note/references/lark-note-transcript.md +23 -0
- package/skills/lark-okr/SKILL.md +115 -0
- package/skills/lark-okr/references/lark-okr-batch-create.md +106 -0
- package/skills/lark-okr/references/lark-okr-contentblock.md +359 -0
- package/skills/lark-okr/references/lark-okr-cycle-detail.md +84 -0
- package/skills/lark-okr/references/lark-okr-cycle-list.md +90 -0
- package/skills/lark-okr/references/lark-okr-entities.md +329 -0
- package/skills/lark-okr/references/lark-okr-image-upload.md +116 -0
- package/skills/lark-okr/references/lark-okr-indicator-update.md +80 -0
- package/skills/lark-okr/references/lark-okr-progress-create.md +81 -0
- package/skills/lark-okr/references/lark-okr-progress-delete.md +47 -0
- package/skills/lark-okr/references/lark-okr-progress-get.md +62 -0
- package/skills/lark-okr/references/lark-okr-progress-list.md +80 -0
- package/skills/lark-okr/references/lark-okr-progress-update.md +81 -0
- package/skills/lark-okr/references/lark-okr-reorder.md +81 -0
- package/skills/lark-okr/references/lark-okr-weight.md +96 -0
- package/skills/lark-openapi-explorer/SKILL.md +153 -0
- package/skills/lark-shared/SKILL.md +168 -0
- package/skills/lark-shared/references/lark-wiki-token-routing.md +42 -0
- package/skills/lark-sheets/SKILL.md +165 -0
- package/skills/lark-sheets/references/lark-sheets-batch-update.md +191 -0
- package/skills/lark-sheets/references/lark-sheets-chart.md +330 -0
- package/skills/lark-sheets/references/lark-sheets-conditional-format.md +179 -0
- package/skills/lark-sheets/references/lark-sheets-core-operations.md +103 -0
- package/skills/lark-sheets/references/lark-sheets-filter-view.md +137 -0
- package/skills/lark-sheets/references/lark-sheets-filter.md +130 -0
- package/skills/lark-sheets/references/lark-sheets-float-image.md +159 -0
- package/skills/lark-sheets/references/lark-sheets-formula-translation.md +267 -0
- package/skills/lark-sheets/references/lark-sheets-pivot-table.md +166 -0
- package/skills/lark-sheets/references/lark-sheets-range-operations.md +267 -0
- package/skills/lark-sheets/references/lark-sheets-read-data.md +235 -0
- package/skills/lark-sheets/references/lark-sheets-search-replace.md +111 -0
- package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +212 -0
- package/skills/lark-sheets/references/lark-sheets-sparkline.md +149 -0
- package/skills/lark-sheets/references/lark-sheets-visual-standards.md +205 -0
- package/skills/lark-sheets/references/lark-sheets-workbook.md +395 -0
- package/skills/lark-sheets/references/lark-sheets-write-cells.md +565 -0
- package/skills/lark-sheets/scripts/sheets_df.py +32 -0
- package/skills/lark-skill-maker/SKILL.md +85 -0
- package/skills/lark-slides/SKILL.md +293 -0
- package/skills/lark-slides/assets/templates/administration--all_hands_meeting.xml +1999 -0
- package/skills/lark-slides/assets/templates/administration--annual_gala.xml +1160 -0
- package/skills/lark-slides/assets/templates/administration--company_intro.xml +1376 -0
- package/skills/lark-slides/assets/templates/administration--corporate_culture.xml +1765 -0
- package/skills/lark-slides/assets/templates/hr--employee_training.xml +912 -0
- package/skills/lark-slides/assets/templates/hr--employee_training_workshop.xml +1504 -0
- package/skills/lark-slides/assets/templates/hr--onboarding.xml +933 -0
- package/skills/lark-slides/assets/templates/marketing--brand_communication.xml +1367 -0
- package/skills/lark-slides/assets/templates/marketing--brand_logo_design.xml +1347 -0
- package/skills/lark-slides/assets/templates/marketing--brand_operations_plan.xml +1309 -0
- package/skills/lark-slides/assets/templates/marketing--business_plan.xml +1646 -0
- package/skills/lark-slides/assets/templates/marketing--marketing_plan.xml +1469 -0
- package/skills/lark-slides/assets/templates/marketing--marketing_strategy.xml +1484 -0
- package/skills/lark-slides/assets/templates/marketing--product_whitepaper.xml +1455 -0
- package/skills/lark-slides/assets/templates/marketing--roadshow_business_plan.xml +1506 -0
- package/skills/lark-slides/assets/templates/misc--book_sharing.xml +1338 -0
- package/skills/lark-slides/assets/templates/misc--club_event_plan.xml +4885 -0
- package/skills/lark-slides/assets/templates/misc--student_career_plan.xml +1854 -0
- package/skills/lark-slides/assets/templates/office--dark_general.xml +3763 -0
- package/skills/lark-slides/assets/templates/office--dept_annual_report.xml +1192 -0
- package/skills/lark-slides/assets/templates/office--light_general.xml +3378 -0
- package/skills/lark-slides/assets/templates/office--project_kickoff.xml +3152 -0
- package/skills/lark-slides/assets/templates/office--quarterly_review.xml +1253 -0
- package/skills/lark-slides/assets/templates/office--work_report.xml +1099 -0
- package/skills/lark-slides/assets/templates/office--work_summary.xml +4420 -0
- package/skills/lark-slides/assets/templates/office--work_summary_report.xml +1523 -0
- package/skills/lark-slides/assets/templates/operations--brand_logo_design.xml +1347 -0
- package/skills/lark-slides/assets/templates/operations--brand_operations_plan.xml +1309 -0
- package/skills/lark-slides/assets/templates/operations--marketing_plan.xml +1469 -0
- package/skills/lark-slides/assets/templates/operations--product_promotion.xml +687 -0
- package/skills/lark-slides/assets/templates/personal--experience_sharing.xml +2242 -0
- package/skills/lark-slides/assets/templates/personal--personal_resume.xml +2047 -0
- package/skills/lark-slides/assets/templates/personal--promotion_defense.xml +1099 -0
- package/skills/lark-slides/assets/templates/personal--promotion_report.xml +1039 -0
- package/skills/lark-slides/assets/templates/personal--self_intro.xml +696 -0
- package/skills/lark-slides/assets/templates/personal--teaching_sharing.xml +3013 -0
- package/skills/lark-slides/assets/templates/product--business_case_analysis.xml +1341 -0
- package/skills/lark-slides/assets/templates/product--market_analysis.xml +898 -0
- package/skills/lark-slides/assets/templates/product--product_analysis.xml +1537 -0
- package/skills/lark-slides/assets/templates/product--product_intro.xml +2838 -0
- package/skills/lark-slides/assets/templates/product--product_promotion.xml +687 -0
- package/skills/lark-slides/assets/templates/product--product_promotion_2.xml +687 -0
- package/skills/lark-slides/references/asset-planning.md +124 -0
- package/skills/lark-slides/references/examples.md +261 -0
- package/skills/lark-slides/references/iconpark-index.json +41901 -0
- package/skills/lark-slides/references/iconpark.md +46 -0
- package/skills/lark-slides/references/lark-slides-create.md +137 -0
- package/skills/lark-slides/references/lark-slides-edit-workflows.md +144 -0
- package/skills/lark-slides/references/lark-slides-media-upload.md +128 -0
- package/skills/lark-slides/references/lark-slides-replace-pages.md +95 -0
- package/skills/lark-slides/references/lark-slides-replace-slide.md +240 -0
- package/skills/lark-slides/references/lark-slides-screenshot.md +94 -0
- package/skills/lark-slides/references/lark-slides-whiteboard.md +330 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +220 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +123 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +110 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +187 -0
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +98 -0
- package/skills/lark-slides/references/planning-layer.md +219 -0
- package/skills/lark-slides/references/slide-templates.md +201 -0
- package/skills/lark-slides/references/slides_demo.xml +226 -0
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +3049 -0
- package/skills/lark-slides/references/template-catalog.md +463 -0
- package/skills/lark-slides/references/template-index.json +1853 -0
- package/skills/lark-slides/references/troubleshooting.md +63 -0
- package/skills/lark-slides/references/validation-checklist.md +110 -0
- package/skills/lark-slides/references/visual-planning.md +254 -0
- package/skills/lark-slides/references/xml-format-guide.md +369 -0
- package/skills/lark-slides/references/xml-schema-quick-ref.md +245 -0
- package/skills/lark-slides/scripts/iconpark_tool.py +362 -0
- package/skills/lark-slides/scripts/iconpark_tool_test.py +177 -0
- package/skills/lark-slides/scripts/template_tool.py +970 -0
- package/skills/lark-slides/scripts/template_tool_test.py +177 -0
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +367 -0
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +263 -0
- package/skills/lark-task/SKILL.md +167 -0
- package/skills/lark-task/references/lark-task-assign.md +38 -0
- package/skills/lark-task/references/lark-task-comment.md +28 -0
- package/skills/lark-task/references/lark-task-complete.md +27 -0
- package/skills/lark-task/references/lark-task-create.md +57 -0
- package/skills/lark-task/references/lark-task-followers.md +35 -0
- package/skills/lark-task/references/lark-task-get-my-tasks.md +61 -0
- package/skills/lark-task/references/lark-task-get-related-tasks.md +53 -0
- package/skills/lark-task/references/lark-task-reminder.md +36 -0
- package/skills/lark-task/references/lark-task-reopen.md +27 -0
- package/skills/lark-task/references/lark-task-search.md +41 -0
- package/skills/lark-task/references/lark-task-set-ancestor.md +32 -0
- package/skills/lark-task/references/lark-task-tasklist-create.md +35 -0
- package/skills/lark-task/references/lark-task-tasklist-members.md +36 -0
- package/skills/lark-task/references/lark-task-tasklist-search.md +38 -0
- package/skills/lark-task/references/lark-task-tasklist-task-add.md +38 -0
- package/skills/lark-task/references/lark-task-update.md +37 -0
- package/skills/lark-task/references/lark-task-upload-attachment.md +59 -0
- package/skills/lark-vc/SKILL.md +202 -0
- package/skills/lark-vc/references/lark-vc-detail.md +44 -0
- package/skills/lark-vc/references/lark-vc-recording.md +154 -0
- package/skills/lark-vc/references/lark-vc-search.md +163 -0
- package/skills/lark-vc/references/vc-domain-boundaries.md +188 -0
- package/skills/lark-vc-agent/SKILL.md +169 -0
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +287 -0
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-join.md +141 -0
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +105 -0
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-list-active.md +91 -0
- package/skills/lark-whiteboard/SKILL.md +47 -0
- package/skills/lark-whiteboard/elements/connectors.md +102 -0
- package/skills/lark-whiteboard/elements/content.md +40 -0
- package/skills/lark-whiteboard/elements/image.md +80 -0
- package/skills/lark-whiteboard/elements/layout.md +374 -0
- package/skills/lark-whiteboard/elements/schema.md +357 -0
- package/skills/lark-whiteboard/elements/style.md +318 -0
- package/skills/lark-whiteboard/elements/typography.md +73 -0
- package/skills/lark-whiteboard/references/lark-whiteboard-query.md +60 -0
- package/skills/lark-whiteboard/references/lark-whiteboard-update.md +122 -0
- package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +94 -0
- package/skills/lark-whiteboard/routes/dsl.md +107 -0
- package/skills/lark-whiteboard/routes/mermaid.md +27 -0
- package/skills/lark-whiteboard/routes/svg-edit.md +85 -0
- package/skills/lark-whiteboard/routes/svg.md +54 -0
- package/skills/lark-whiteboard/scenes/architecture.md +433 -0
- package/skills/lark-whiteboard/scenes/bar-chart.md +187 -0
- package/skills/lark-whiteboard/scenes/comparison.md +135 -0
- package/skills/lark-whiteboard/scenes/fishbone.md +238 -0
- package/skills/lark-whiteboard/scenes/flowchart.md +185 -0
- package/skills/lark-whiteboard/scenes/flywheel.md +195 -0
- package/skills/lark-whiteboard/scenes/funnel.md +101 -0
- package/skills/lark-whiteboard/scenes/line-chart.md +214 -0
- package/skills/lark-whiteboard/scenes/mermaid.md +130 -0
- package/skills/lark-whiteboard/scenes/milestone.md +139 -0
- package/skills/lark-whiteboard/scenes/organization.md +173 -0
- package/skills/lark-whiteboard/scenes/photo-showcase.md +126 -0
- package/skills/lark-whiteboard/scenes/pyramid.md +99 -0
- package/skills/lark-whiteboard/scenes/swimlane.md +371 -0
- package/skills/lark-whiteboard/scenes/treemap.md +216 -0
- package/skills/lark-wiki/SKILL.md +110 -0
- package/skills/lark-wiki/references/lark-wiki-delete-space.md +205 -0
- package/skills/lark-wiki/references/lark-wiki-member-add.md +67 -0
- package/skills/lark-wiki/references/lark-wiki-member-list.md +76 -0
- package/skills/lark-wiki/references/lark-wiki-member-remove.md +61 -0
- package/skills/lark-wiki/references/lark-wiki-move.md +183 -0
- package/skills/lark-wiki/references/lark-wiki-node-copy.md +72 -0
- package/skills/lark-wiki/references/lark-wiki-node-create.md +127 -0
- package/skills/lark-wiki/references/lark-wiki-node-delete.md +62 -0
- package/skills/lark-wiki/references/lark-wiki-node-get.md +57 -0
- package/skills/lark-wiki/references/lark-wiki-node-list.md +88 -0
- package/skills/lark-wiki/references/lark-wiki-space-create.md +46 -0
- package/skills/lark-wiki/references/lark-wiki-space-list.md +68 -0
- package/skills/lark-workflow-meeting-summary/SKILL.md +122 -0
- package/skills/lark-workflow-standup-report/SKILL.md +122 -0
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# im +messages-send
|
|
2
|
+
|
|
3
|
+
> **Prerequisite:** Read [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) first to understand authentication, global parameters, and safety rules.
|
|
4
|
+
|
|
5
|
+
Send a message to a group chat or a direct message conversation. Supports both user identity (`--as user`) and bot identity (`--as bot`).
|
|
6
|
+
|
|
7
|
+
This skill maps to the shortcut: `lark-cli im +messages-send` (internally calls `POST /open-apis/im/v1/messages`).
|
|
8
|
+
|
|
9
|
+
## Safety Constraints
|
|
10
|
+
|
|
11
|
+
Messages sent by this tool are visible to other people. Before calling it, you **must** confirm with the user:
|
|
12
|
+
|
|
13
|
+
1. The recipient (which person or which group)
|
|
14
|
+
2. The message content
|
|
15
|
+
3. The sending identity (user or bot)
|
|
16
|
+
|
|
17
|
+
**Do not** send messages without explicit user approval.
|
|
18
|
+
|
|
19
|
+
When using `--as bot`, the message is sent in the app's name, so make sure the app has already been added to the target chat.
|
|
20
|
+
|
|
21
|
+
When using `--as user`, the message is sent as the authorized end user and requires the `im:message.send_as_user` and `im:message` scopes.
|
|
22
|
+
|
|
23
|
+
## Choose The Right Content Flag
|
|
24
|
+
|
|
25
|
+
### Default Selection Rule For Agents
|
|
26
|
+
|
|
27
|
+
- Prefer `--markdown` for headings, lists, links, summaries, reports, or Markdown-looking content.
|
|
28
|
+
- Use `--text` for exact plain text: logs, code, indentation-sensitive text, or literal Markdown.
|
|
29
|
+
- Use `--content` for exact `post` JSON, titles, multiple locales, cards, or unsupported structures.
|
|
30
|
+
|
|
31
|
+
| Need | Recommended flag | Why |
|
|
32
|
+
|------|------|------|
|
|
33
|
+
| Send headings, lists, links, summaries, or reports | `--markdown` | Best default for lightweight formatting; converted to Feishu `post` JSON |
|
|
34
|
+
| Send plain text exactly as written | `--text` | Preserves literal text; no Markdown conversion |
|
|
35
|
+
| Precisely control the final payload | `--content` | You provide the exact JSON for `text` / `post` / `interactive` / `share_*` / media payloads |
|
|
36
|
+
| Send image / file / video / audio | `--image` / `--file` / `--video` / `--audio` | Shortcut uploads URLs, or cwd-relative local files automatically |
|
|
37
|
+
|
|
38
|
+
### `--text` vs `--markdown`
|
|
39
|
+
|
|
40
|
+
- Use `--markdown` for lightweight formatted messages.
|
|
41
|
+
- Use `--text` for exact plain text, especially logs, code, indentation, or Markdown characters that should **not** render.
|
|
42
|
+
- Use `--content` when `--markdown` is not enough, especially if you need exact `post` JSON, a title, multiple locales, cards, or unsupported rich structures.
|
|
43
|
+
|
|
44
|
+
## What `--markdown` Really Does
|
|
45
|
+
|
|
46
|
+
`--markdown` accepts Markdown-like input and converts it to the Feishu `post` payload required by the message API.
|
|
47
|
+
|
|
48
|
+
The shortcut does all of the following before sending:
|
|
49
|
+
|
|
50
|
+
1. Forces `msg_type=post`
|
|
51
|
+
2. Resolves remote Markdown images like `` by downloading and uploading them first
|
|
52
|
+
3. Normalizes the Markdown for Feishu post rendering
|
|
53
|
+
4. Wraps the result as:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{"zh_cn":{"content":[[{"tag":"md","text":"..."}]]}}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
This makes `--markdown` the simplest path for lightweight formatted messages.
|
|
60
|
+
|
|
61
|
+
### Markdown Boundaries
|
|
62
|
+
|
|
63
|
+
- It does **not** promise full CommonMark / GitHub Flavored Markdown support.
|
|
64
|
+
- It always becomes a `post` payload with a single `zh_cn` locale.
|
|
65
|
+
- It does **not** let you set a `post` title. If you need a title, use `--msg-type post --content ...`.
|
|
66
|
+
- Headings are rewritten:
|
|
67
|
+
- `# Title` becomes `#### Title`
|
|
68
|
+
- `##` to `######` are normalized to `#####` when the content contains H1-H3
|
|
69
|
+
- Consecutive headings are separated with blank lines after heading normalization.
|
|
70
|
+
- Block spacing and line breaks may be normalized during conversion.
|
|
71
|
+
- Code blocks are preserved as code blocks.
|
|
72
|
+
- Excess blank lines are compressed.
|
|
73
|
+
- Already-uploaded `img_xxx` image keys are the most reliable Markdown image input.
|
|
74
|
+
- Local paths in Markdown image syntax like `` are **not** supported and will not be auto-uploaded.
|
|
75
|
+
- Remote URLs (`https://...`) will be auto-downloaded and uploaded at runtime; if the download or upload fails, the image is removed with a warning.
|
|
76
|
+
|
|
77
|
+
If you need a title, multiple locales, cards, unsupported rich structures, or byte-for-byte post JSON control, use `--content` and provide the final JSON yourself.
|
|
78
|
+
|
|
79
|
+
### Image Constraint for `--markdown`
|
|
80
|
+
|
|
81
|
+
When using `--markdown` with images, prefer pre-uploading via `images.create` and referencing `` for predictable results. Remote URLs may work but are not guaranteed.
|
|
82
|
+
|
|
83
|
+
**Steps:**
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# 1. Upload image to get image_key
|
|
87
|
+
lark-cli im images create --data '{"image_type":"message"}' --file ./diagram.png
|
|
88
|
+
# Returns: {"image_key":"img_v3_xxxx"}
|
|
89
|
+
|
|
90
|
+
# 2. Use image_key in --markdown
|
|
91
|
+
lark-cli im +messages-send --chat-id oc_xxx --markdown $'## Report\n\n\n\nSee above for details.'
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Preserving Formatting
|
|
95
|
+
|
|
96
|
+
If the message has multiple lines, indentation, code blocks, tabs, or many quotes/backslashes, prefer shell ANSI-C quoting with `$'...'` for either `--markdown` or `--text`.
|
|
97
|
+
|
|
98
|
+
This is especially useful in `zsh` / `bash` because it lets you write `\n` explicitly instead of relying on the shell to preserve literal newlines.
|
|
99
|
+
|
|
100
|
+
### When formatting must be preserved
|
|
101
|
+
|
|
102
|
+
Use `--text` plus `$'...'`:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
lark-cli im +messages-send --chat-id oc_xxx --text $'Build failed\nBranch: feature/im-docs\nAction: please check logs'
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
lark-cli im +messages-send --chat-id oc_xxx --text $'```bash\nmake test\nmake lint\n```'
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Use this path when you want the receiver to see the text exactly as entered, not a converted Markdown post.
|
|
113
|
+
|
|
114
|
+
## Commands
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# Send a formatted update
|
|
118
|
+
lark-cli im +messages-send --chat-id oc_xxx --markdown $'## Update\n\n- item 1\n- item 2'
|
|
119
|
+
|
|
120
|
+
# Send a plain one-line message
|
|
121
|
+
lark-cli im +messages-send --chat-id oc_xxx --text "Hello"
|
|
122
|
+
|
|
123
|
+
# Equivalent manual JSON
|
|
124
|
+
lark-cli im +messages-send --chat-id oc_xxx --content '{"text":"Hello"}'
|
|
125
|
+
|
|
126
|
+
# Send to a direct message (pass open_id)
|
|
127
|
+
lark-cli im +messages-send --user-id ou_xxx --text "Hello"
|
|
128
|
+
|
|
129
|
+
# Send multi-line text while preserving formatting
|
|
130
|
+
lark-cli im +messages-send --chat-id oc_xxx --text $'Line 1\nLine 2\n indented line'
|
|
131
|
+
|
|
132
|
+
# Send Markdown with an image (must pre-upload via images.create)
|
|
133
|
+
lark-cli im images create --data '{"image_type":"message"}' --file ./screenshot.png
|
|
134
|
+
# Use the returned image_key in the markdown content
|
|
135
|
+
lark-cli im +messages-send --chat-id oc_xxx --markdown $'## Status\n\n\n\nDone.'
|
|
136
|
+
|
|
137
|
+
# If you need exact post structure, send JSON directly
|
|
138
|
+
lark-cli im +messages-send --chat-id oc_xxx --msg-type post --content '{"zh_cn":{"title":"Title","content":[[{"tag":"text","text":"Body"}]]}}'
|
|
139
|
+
|
|
140
|
+
# Send a local image (uploaded automatically before sending)
|
|
141
|
+
lark-cli im +messages-send --chat-id oc_xxx --image ./photo.png
|
|
142
|
+
|
|
143
|
+
# Or send directly with an existing image_key
|
|
144
|
+
lark-cli im +messages-send --chat-id oc_xxx --image img_xxx
|
|
145
|
+
|
|
146
|
+
# Send a local file (uploaded automatically before sending)
|
|
147
|
+
lark-cli im +messages-send --chat-id oc_xxx --file ./report.pdf
|
|
148
|
+
|
|
149
|
+
# Send a video (--video-cover is required as the cover)
|
|
150
|
+
lark-cli im +messages-send --chat-id oc_xxx --video ./demo.mp4 --video-cover ./cover.png
|
|
151
|
+
lark-cli im +messages-send --chat-id oc_xxx --video ./demo.mp4 --video-cover img_xxx
|
|
152
|
+
|
|
153
|
+
# Send a voice message
|
|
154
|
+
lark-cli im +messages-send --chat-id oc_xxx --audio ./voice.opus
|
|
155
|
+
|
|
156
|
+
# Use an idempotency key (same key sends only once within 1 hour)
|
|
157
|
+
lark-cli im +messages-send --chat-id oc_xxx --text "Hello" --idempotency-key my-unique-id
|
|
158
|
+
|
|
159
|
+
# Preview the request without executing it
|
|
160
|
+
lark-cli im +messages-send --chat-id oc_xxx --markdown $'## Test\n\nhello' --dry-run
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Media Input Rules
|
|
164
|
+
|
|
165
|
+
- Media flags accept an existing key (`img_xxx` / `file_xxx`), an `http://` or `https://` URL, or a local file path.
|
|
166
|
+
- Local paths must be relative to the current working directory and stay within it after resolving `..` and symlinks.
|
|
167
|
+
- Absolute paths such as `/tmp/photo.png` are rejected. Run the command from the file's directory and pass `./photo.png`, or copy the file into the current directory first.
|
|
168
|
+
- `--audio` sends a voice message and accepts only Opus audio (`.opus` or Ogg Opus `.ogg`) for local paths and URLs. For `mp3`, `wav`, or other non-Opus audio, convert to `.opus` before using `--audio`, or use `--file` to send the original audio as an attachment.
|
|
169
|
+
|
|
170
|
+
## Parameters
|
|
171
|
+
|
|
172
|
+
| Parameter | Required | Description |
|
|
173
|
+
|------|------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
174
|
+
| `--chat-id <id>` | One of two | Group chat ID (`oc_xxx`) |
|
|
175
|
+
| `--user-id <id>` | One of two | User open_id (`ou_xxx`) for direct messages |
|
|
176
|
+
| `--text <string>` | One content option | Plain text message. Use when exact text and formatting preservation matter. Automatically wrapped as `{"text":"..."}` |
|
|
177
|
+
| `--markdown <string>` | One content option | Best default for lightweight formatted messages such as headings, lists, links, summaries, and reports. Internally converted to `post` JSON with Feishu-specific normalization |
|
|
178
|
+
| `--content <json>` | One content option | Exact message content JSON string; use this when you need full control over `msg_type` and payload. The JSON must match the effective `--msg-type` |
|
|
179
|
+
| `--image <path\|url\|key>` | One content option | Cwd-relative local image path, URL, or `image_key` (`img_xxx`). Local paths and URLs are uploaded automatically |
|
|
180
|
+
| `--file <path\|url\|key>` | One content option | Cwd-relative local file path, URL, or `file_key` (`file_xxx`). Local paths and URLs are uploaded automatically |
|
|
181
|
+
| `--video <path\|url\|key>` | One content option | Cwd-relative local video path, URL, or `file_key` (`file_xxx`). Local paths and URLs are uploaded automatically. **Must be paired with `--video-cover`** |
|
|
182
|
+
| `--video-cover <path\|url\|key>` | **Required with `--video`** | Cwd-relative local cover image path, URL, or `image_key` (`img_xxx`). Local paths and URLs are uploaded automatically |
|
|
183
|
+
| `--audio <path\|url\|key>` | One content option | Voice-message audio key, URL, or cwd-relative local path. Local paths and URLs must be Opus (`.opus` or Ogg Opus `.ogg`) |
|
|
184
|
+
| `--msg-type <type>` | No | Message type (default `text`). If you use `--text` / `--markdown` / media flags, the effective type is inferred automatically. Explicitly setting a conflicting `--msg-type` fails validation |
|
|
185
|
+
| `--idempotency-key <key>` | No | Idempotency key; the same key sends only one message within 1 hour |
|
|
186
|
+
| `--as <identity>` | No | Identity type: `bot` or `user` (default `bot`) |
|
|
187
|
+
| `--dry-run` | No | Print the request only, do not execute it |
|
|
188
|
+
|
|
189
|
+
> **Mutual exclusivity rule:** `--text`, `--markdown`, `--content`, and `--image`/`--file`/`--video`/`--audio` cannot be used together. Media flags are also mutually exclusive with each other.
|
|
190
|
+
>
|
|
191
|
+
> **Video cover rule:** `--video` **must** be accompanied by `--video-cover`. Omitting `--video-cover` when using `--video` will fail validation. `--video-cover` cannot be used without `--video`.
|
|
192
|
+
|
|
193
|
+
## Common Mistakes
|
|
194
|
+
|
|
195
|
+
- Choosing `--text` for headings, lists, links, summaries, or reports. Use `--markdown`.
|
|
196
|
+
- Choosing `--markdown` when you actually need exact plain text. If exact line breaks, spacing, logs, code, or literal Markdown characters matter, use `--text`, usually with `$'...'`.
|
|
197
|
+
- Assuming `--markdown` supports every Markdown feature. It is converted into a Feishu `post` payload and normalized first.
|
|
198
|
+
- Putting local image paths inside Markdown like ``. `--markdown` does not auto-upload those paths.
|
|
199
|
+
- **Using local file paths inside Markdown image syntax** (e.g. ``) with `--markdown`. Local paths are not auto-uploaded and will not render as an image. Pre-upload via `images.create` to get an `image_key` instead.
|
|
200
|
+
- Using `--content` without making the JSON match the effective `--msg-type`.
|
|
201
|
+
- Explicitly setting `--msg-type` to something that conflicts with `--text`, `--markdown`, or media flags.
|
|
202
|
+
- Mixing `--text`, `--markdown`, or `--content` with media flags in one command.
|
|
203
|
+
|
|
204
|
+
## `content` Format Reference
|
|
205
|
+
|
|
206
|
+
| `msg_type` | Example `content` |
|
|
207
|
+
|----------|-------------|
|
|
208
|
+
| `text` | `{"text":"Hello <at user_id=\"ou_xxx\">name</at>"}` |
|
|
209
|
+
| `post` | `{"zh_cn":{"title":"Title","content":[[{"tag":"text","text":"Body"}]]}}` |
|
|
210
|
+
| `image` | `{"image_key":"img_xxx"}` |
|
|
211
|
+
| `file` | `{"file_key":"file_xxx"}` |
|
|
212
|
+
| `audio` | `{"file_key":"file_xxx"}` |
|
|
213
|
+
| `media` | `{"file_key":"file_xxx","image_key":"img_xxx"}` (video; `image_key` is the cover from `--video-cover` — **required**) |
|
|
214
|
+
| `share_chat` | `{"chat_id":"oc_xxx"}` |
|
|
215
|
+
| `share_user` | `{"user_id":"ou_xxx"}` |
|
|
216
|
+
| `interactive` | Card JSON (see Feishu interactive card documentation) |
|
|
217
|
+
|
|
218
|
+
`interactive` cards support callback events (`card.action.trigger`) — see [`lark-im-card-action-reply.md`](lark-im-card-action-reply.md).
|
|
219
|
+
|
|
220
|
+
## Return Value
|
|
221
|
+
|
|
222
|
+
```json
|
|
223
|
+
{
|
|
224
|
+
"message_id": "om_xxx",
|
|
225
|
+
"chat_id": "oc_xxx",
|
|
226
|
+
"create_time": "1234567890"
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## @Mention Format
|
|
231
|
+
|
|
232
|
+
The `<at>` syntax differs by message type. The shortcut only normalizes mentions for `text` and `post`; `interactive` card content is passed through verbatim, so cards must use the card-native syntax below.
|
|
233
|
+
|
|
234
|
+
### `text`
|
|
235
|
+
|
|
236
|
+
- `<at user_id="ou_xxx">name</at>` — the inner text is the mentioned user's display name and is optional (`<at user_id="ou_xxx"></at>` also works)
|
|
237
|
+
- @all: `<at user_id="all"></at>`
|
|
238
|
+
|
|
239
|
+
### `post`
|
|
240
|
+
|
|
241
|
+
- Inside a `text` or `md` element, the same inline form as `text` works: `<at user_id="ou_xxx">name</at>`
|
|
242
|
+
- Or use a dedicated `at` element node: `{"tag":"at","user_id":"ou_xxx"}` (use `"all"` to mention everyone)
|
|
243
|
+
|
|
244
|
+
### `interactive` (card)
|
|
245
|
+
|
|
246
|
+
Card content is **not** normalized — use the card-native `<at>` syntax inside a `lark_md` / `markdown` element:
|
|
247
|
+
|
|
248
|
+
- single user by open_id: `<at id=ou_xxx></at>`
|
|
249
|
+
- multiple users: `<at ids=ou_xxx1,ou_xxx2></at>`
|
|
250
|
+
- by email: `<at email=user@example.com></at>`
|
|
251
|
+
|
|
252
|
+
## Notes
|
|
253
|
+
|
|
254
|
+
- `--chat-id` and `--user-id` are mutually exclusive; you must provide exactly one
|
|
255
|
+
- `--content` must be valid JSON
|
|
256
|
+
- When using `--content`, you are responsible for making the JSON structure match the effective `msg_type`
|
|
257
|
+
- `--image`/`--file`/`--video`/`--audio` support existing keys, URLs, and cwd-relative local file paths; the shortcut uploads local paths and URLs first, then sends the message; both the upload and send steps use the same identity (UAT when `--as user`, TAT when `--as bot`)
|
|
258
|
+
- If the provided media value starts with `img_` or `file_`, it is treated as an existing key and used directly
|
|
259
|
+
- `--markdown` always sends `msg_type=post`, even if you do not explicitly set `--msg-type post`
|
|
260
|
+
- If you explicitly set `--msg-type` and it conflicts with the chosen content flag, validation fails
|
|
261
|
+
- When using `--video`, `--video-cover` is required as the video cover
|
|
262
|
+
- `--dry-run` uses placeholder image keys for remote Markdown images and placeholder media keys for local uploads
|
|
263
|
+
- Failures return an error code and message
|
|
264
|
+
- `--as user` uses a user access token (UAT) and requires the `im:message.send_as_user` and `im:message` scopes; the message is sent as the authorized end user
|
|
265
|
+
- `--as bot` uses a tenant access token (TAT) and requires the `im:message:send_as_bot` scope
|
|
266
|
+
- When sending as a bot, the app must already be in the target group or already have a direct-message relationship with the target user
|
|
267
|
+
- When using `--markdown` with images, pre-uploading via `images.create` to obtain an `image_key` is recommended for reliability; remote URLs may be auto-resolved at runtime, but if download/upload fails the image is removed with a warning; local paths are not supported
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
# im reactions
|
|
2
|
+
|
|
3
|
+
> **Prerequisite:** Read [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) first to understand authentication, global parameters, and safety rules.
|
|
4
|
+
|
|
5
|
+
> **Heads-up — don't reach for `batch_query` by default.** The four message-pulling shortcuts (`+messages-mget`, `+chat-messages-list`, `+messages-search`, `+threads-messages-list`) already call `im.reactions.batch_query` automatically and attach the result as a `reactions` block on each message (replies inside `thread_replies` included). Use those shortcuts for any "read reactions of messages I'm already pulling" task. Reach for the raw `batch_query` API only when you have a standalone `message_id` outside that pull flow. See the main [message enrichment](lark-im-message-enrichment.md) for the contract.
|
|
6
|
+
|
|
7
|
+
This reference is the shared annotation target for the IM reaction APIs:
|
|
8
|
+
|
|
9
|
+
- `im.reactions.create`
|
|
10
|
+
- `im.reactions.list`
|
|
11
|
+
- `im.reactions.delete`
|
|
12
|
+
- `im.reactions.batch_query`
|
|
13
|
+
|
|
14
|
+
It focuses on:
|
|
15
|
+
|
|
16
|
+
- What each reaction method does
|
|
17
|
+
- The request/response shape you need when calling the raw API commands
|
|
18
|
+
- The complete `emoji_type` list used in reaction payloads and filters
|
|
19
|
+
|
|
20
|
+
> **Important:** These raw API commands accept structured input through `--params '<json>'` and `--data '<json>'`. They do not expose typed flags such as `--message-id` or `--reaction-type` directly.
|
|
21
|
+
|
|
22
|
+
## Command Overview
|
|
23
|
+
|
|
24
|
+
| Method | HTTP | Path | Purpose |
|
|
25
|
+
|---|---|---|---|
|
|
26
|
+
| `im.reactions.create` | `POST` | `/open-apis/im/v1/messages/{message_id}/reactions` | Add a reaction to one message |
|
|
27
|
+
| `im.reactions.list` | `GET` | `/open-apis/im/v1/messages/{message_id}/reactions` | List reaction records on one message |
|
|
28
|
+
| `im.reactions.delete` | `DELETE` | `/open-apis/im/v1/messages/{message_id}/reactions/{reaction_id}` | Delete one specific reaction record |
|
|
29
|
+
| `im.reactions.batch_query` | `POST` | `/open-apis/im/v1/messages/reactions/batch_query` | Query reactions for multiple messages in one request |
|
|
30
|
+
|
|
31
|
+
## Common Notes
|
|
32
|
+
|
|
33
|
+
- `message_id` is always an IM message ID such as `om_xxx`
|
|
34
|
+
- `reaction_id` is the unique record ID returned after a reaction is added
|
|
35
|
+
- `reaction_type.emoji_type` is the enum-like emoji identifier used by both write and read APIs
|
|
36
|
+
- Reaction APIs return **reaction records**, not only aggregated counts
|
|
37
|
+
- When the operator is a human user, the returned ID type may depend on `user_id_type`
|
|
38
|
+
|
|
39
|
+
## Inspect Schema
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
lark-cli schema im.reactions
|
|
43
|
+
lark-cli schema im.reactions.create --format pretty
|
|
44
|
+
lark-cli schema im.reactions.list --format pretty
|
|
45
|
+
lark-cli schema im.reactions.delete --format pretty
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
If your local build has already exposed the batch API in `schema`, also check:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
lark-cli schema im.reactions.batch_query --format pretty
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## create
|
|
55
|
+
|
|
56
|
+
Add a reaction to one message.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
lark-cli im reactions create \
|
|
60
|
+
--params '{"message_id":"om_xxx"}' \
|
|
61
|
+
--data '{"reaction_type":{"emoji_type":"SMILE"}}'
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Request
|
|
65
|
+
|
|
66
|
+
- `--params.message_id`: required message ID
|
|
67
|
+
- `--data.reaction_type.emoji_type`: required emoji type
|
|
68
|
+
|
|
69
|
+
### Response
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"reaction_id": "ZCaCIjUBVVWSrm5L-3ZTw_xxx",
|
|
74
|
+
"operator": {
|
|
75
|
+
"operator_id": "ou_xxx",
|
|
76
|
+
"operator_type": "user"
|
|
77
|
+
},
|
|
78
|
+
"action_time": "1663054162546",
|
|
79
|
+
"reaction_type": {
|
|
80
|
+
"emoji_type": "SMILE"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## list
|
|
86
|
+
|
|
87
|
+
List reaction records on one message.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
lark-cli im reactions list --params '{"message_id":"om_xxx"}'
|
|
91
|
+
lark-cli im reactions list --params '{"message_id":"om_xxx","reaction_type":"SMILE"}'
|
|
92
|
+
lark-cli im reactions list --params '{"message_id":"om_xxx","page_size":50}'
|
|
93
|
+
lark-cli im reactions list --params '{"message_id":"om_xxx","page_token":"<PAGE_TOKEN>"}'
|
|
94
|
+
lark-cli im reactions list --params '{"message_id":"om_xxx","user_id_type":"open_id"}'
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Request Parameters (`--params`)
|
|
98
|
+
|
|
99
|
+
| Parameter | Required | Description |
|
|
100
|
+
|---|---|---|
|
|
101
|
+
| `message_id` | Yes | Message ID (`om_xxx`) |
|
|
102
|
+
| `reaction_type` | No | Filter by one emoji type such as `SMILE` or `LAUGH` |
|
|
103
|
+
| `page_size` | No | Number of records per page. Default is 20 |
|
|
104
|
+
| `page_token` | No | Pagination token from the previous page |
|
|
105
|
+
| `user_id_type` | No | Returned operator ID type when `operator_type=user`: `open_id`, `union_id`, or `user_id` |
|
|
106
|
+
|
|
107
|
+
### Response Shape
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"items": [
|
|
112
|
+
{
|
|
113
|
+
"reaction_id": "ZCaCIjUBVVWSrm5L-3ZTw_xxx",
|
|
114
|
+
"operator": {
|
|
115
|
+
"operator_id": "ou_xxx",
|
|
116
|
+
"operator_type": "user"
|
|
117
|
+
},
|
|
118
|
+
"action_time": "1663054162546",
|
|
119
|
+
"reaction_type": {
|
|
120
|
+
"emoji_type": "SMILE"
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
],
|
|
124
|
+
"has_more": true,
|
|
125
|
+
"page_token": "YhljsPiGfUgnVAg9urvRFd-BvSqRLxxxx"
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Top-Level Fields
|
|
130
|
+
|
|
131
|
+
| Field | Type | Meaning |
|
|
132
|
+
|---|---|---|
|
|
133
|
+
| `items` | `array<object>` | Reaction records for the current page |
|
|
134
|
+
| `has_more` | `boolean` | Whether more pages are available |
|
|
135
|
+
| `page_token` | `string` | Token for the next page when `has_more=true` |
|
|
136
|
+
|
|
137
|
+
### `items[]` Fields
|
|
138
|
+
|
|
139
|
+
| Field | Type | Meaning |
|
|
140
|
+
|---|---|---|
|
|
141
|
+
| `reaction_id` | `string` | Unique ID of this reaction record |
|
|
142
|
+
| `operator` | `object` | Identity of the user or app that added the reaction |
|
|
143
|
+
| `action_time` | `string` | Unix timestamp in milliseconds |
|
|
144
|
+
| `reaction_type` | `object` | Reaction payload. The key field is `emoji_type` |
|
|
145
|
+
|
|
146
|
+
### `operator` Fields
|
|
147
|
+
|
|
148
|
+
| Field | Type | Meaning |
|
|
149
|
+
|---|---|---|
|
|
150
|
+
| `operator.operator_id` | `string` | Operator ID. If `operator_type=user`, the returned ID type follows `user_id_type`; if `operator_type=app`, this is the app ID |
|
|
151
|
+
| `operator.operator_type` | `string` | `user` or `app` |
|
|
152
|
+
|
|
153
|
+
## delete
|
|
154
|
+
|
|
155
|
+
Delete one specific reaction record from one message.
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
lark-cli im reactions delete \
|
|
159
|
+
--params '{"message_id":"om_xxx","reaction_id":"ZCaCIjUBVVWSrm5L-3ZTw_xxx"}'
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Request
|
|
163
|
+
|
|
164
|
+
- `--params.message_id`: required message ID
|
|
165
|
+
- `--params.reaction_id`: required reaction record ID
|
|
166
|
+
|
|
167
|
+
### Response
|
|
168
|
+
|
|
169
|
+
The response shape is similar to `create`, and usually echoes:
|
|
170
|
+
|
|
171
|
+
- `reaction_id`
|
|
172
|
+
- `operator`
|
|
173
|
+
- `action_time`
|
|
174
|
+
- `reaction_type.emoji_type`
|
|
175
|
+
|
|
176
|
+
## batch_query
|
|
177
|
+
|
|
178
|
+
Query reactions for multiple messages in one request.
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
lark-cli im reactions batch_query \
|
|
182
|
+
--params '{"user_id_type":"open_id"}' \
|
|
183
|
+
--data '{
|
|
184
|
+
"queries":[
|
|
185
|
+
{"message_id":"om_xxx"},
|
|
186
|
+
{"message_id":"om_yyy","page_token":"<PAGE_TOKEN>"}
|
|
187
|
+
],
|
|
188
|
+
"page_size_per_message":10,
|
|
189
|
+
"reaction_type":"LAUGH"
|
|
190
|
+
}'
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Request
|
|
194
|
+
|
|
195
|
+
#### `--params`
|
|
196
|
+
|
|
197
|
+
| Parameter | Required | Description |
|
|
198
|
+
|---|---|---|
|
|
199
|
+
| `user_id_type` | No | Returned user ID type in operator info: `open_id`, `union_id`, or `user_id` |
|
|
200
|
+
|
|
201
|
+
#### `--data`
|
|
202
|
+
|
|
203
|
+
| Field | Required | Description |
|
|
204
|
+
|---|---|---|
|
|
205
|
+
| `queries` | Yes | Array of target messages |
|
|
206
|
+
| `queries[].message_id` | No | Message ID to query |
|
|
207
|
+
| `queries[].page_token` | No | Continuation token for that message |
|
|
208
|
+
| `page_size_per_message` | No | Max reactions returned per message |
|
|
209
|
+
| `reaction_type` | No | Filter by one emoji type |
|
|
210
|
+
|
|
211
|
+
### Response
|
|
212
|
+
|
|
213
|
+
The meta definition contains three top-level result groups:
|
|
214
|
+
|
|
215
|
+
| Field | Meaning |
|
|
216
|
+
|---|---|
|
|
217
|
+
| `success_msg_reaction_details` | Per-message reaction detail records |
|
|
218
|
+
| `success_msg_reaction_counts` | Per-message aggregated reaction counts |
|
|
219
|
+
| `fail_msg_reaction_details` | Query failures for individual messages |
|
|
220
|
+
|
|
221
|
+
#### `success_msg_reaction_details`
|
|
222
|
+
|
|
223
|
+
Each `message_reaction_items[]` element includes:
|
|
224
|
+
|
|
225
|
+
- `reaction_id`
|
|
226
|
+
- `operator`
|
|
227
|
+
- `action_time`
|
|
228
|
+
- `emoji_type`
|
|
229
|
+
|
|
230
|
+
#### `success_msg_reaction_counts`
|
|
231
|
+
|
|
232
|
+
Each aggregated count record includes:
|
|
233
|
+
|
|
234
|
+
- `message_id`
|
|
235
|
+
- `reaction_count[].reaction_type`
|
|
236
|
+
- `reaction_count[].count`
|
|
237
|
+
|
|
238
|
+
#### `fail_msg_reaction_details`
|
|
239
|
+
|
|
240
|
+
Each failed message record includes:
|
|
241
|
+
|
|
242
|
+
- `message_id`
|
|
243
|
+
- `fail_reason`
|
|
244
|
+
|
|
245
|
+
Supported `fail_reason` values from meta:
|
|
246
|
+
|
|
247
|
+
- `invalid`
|
|
248
|
+
- `invalid_page_token`
|
|
249
|
+
- `no_permission`
|
|
250
|
+
|
|
251
|
+
## `emoji_type` Field
|
|
252
|
+
|
|
253
|
+
Reaction emoji identifiers are used in slightly different field names across the APIs:
|
|
254
|
+
|
|
255
|
+
- `im.reactions.create`: request and response use `reaction_type.emoji_type`
|
|
256
|
+
- `im.reactions.list`: request filter uses `reaction_type`, response uses `reaction_type.emoji_type`
|
|
257
|
+
- `im.reactions.delete`: response uses `reaction_type.emoji_type`
|
|
258
|
+
- `im.reactions.batch_query`: request filter uses top-level `reaction_type`, detail results use `message_reaction_items[].emoji_type`, aggregated results use `reaction_count[].reaction_type`
|
|
259
|
+
|
|
260
|
+
## Complete `emoji_type` List
|
|
261
|
+
|
|
262
|
+
The following list is synchronized from the official Feishu reaction emoji documentation:
|
|
263
|
+
|
|
264
|
+
- Source page: `https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message-reaction/emojis-introduce`
|
|
265
|
+
- Markdown source: `https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message-reaction/emojis-introduce.md`
|
|
266
|
+
|
|
267
|
+
Current count in the fetched source: `185`.
|
|
268
|
+
|
|
269
|
+
```text
|
|
270
|
+
OK, THUMBSUP, THANKS, MUSCLE, FINGERHEART, APPLAUSE, FISTBUMP, JIAYI
|
|
271
|
+
DONE, SMILE, BLUSH, LAUGH, SMIRK, LOL, FACEPALM, LOVE
|
|
272
|
+
WINK, PROUD, WITTY, SMART, SCOWL, THINKING, SOB, CRY
|
|
273
|
+
ERROR, NOSEPICK, HAUGHTY, SLAP, SPITBLOOD, TOASTED, GLANCE, DULL
|
|
274
|
+
INNOCENTSMILE, JOYFUL, WOW, TRICK, YEAH, ENOUGH, TEARS, EMBARRASSED
|
|
275
|
+
KISS, SMOOCH, DROOL, OBSESSED, MONEY, TEASE, SHOWOFF, COMFORT
|
|
276
|
+
CLAP, PRAISE, STRIVE, XBLUSH, SILENT, WAVE, WHAT, FROWN
|
|
277
|
+
SHY, DIZZY, LOOKDOWN, CHUCKLE, WAIL, CRAZY, WHIMPER, HUG
|
|
278
|
+
BLUBBER, WRONGED, HUSKY, SHHH, SMUG, ANGRY, HAMMER, SHOCKED
|
|
279
|
+
TERROR, PETRIFIED, SKULL, SWEAT, SPEECHLESS, SLEEP, DROWSY, YAWN
|
|
280
|
+
SICK, PUKE, BETRAYED, HEADSET, EatingFood, MeMeMe, Sigh, Typing
|
|
281
|
+
Lemon, Get, LGTM, OnIt, OneSecond, VRHeadset, YouAreTheBest, SALUTE
|
|
282
|
+
SHAKE, HIGHFIVE, UPPERLEFT, ThumbsDown, SLIGHT, TONGUE, EYESCLOSED, RoarForYou
|
|
283
|
+
CALF, BEAR, BULL, RAINBOWPUKE, ROSE, HEART, PARTY, LIPS
|
|
284
|
+
BEER, CAKE, GIFT, CUCUMBER, Drumstick, Pepper, CANDIEDHAWS, BubbleTea
|
|
285
|
+
Coffee, Yes, No, OKR, CheckMark, CrossMark, MinusOne, Hundred
|
|
286
|
+
AWESOMEN, Pin, Alarm, Loudspeaker, Trophy, Fire, BOMB, Music
|
|
287
|
+
XmasTree, Snowman, XmasHat, FIREWORKS, 2022, REDPACKET, FORTUNE, LUCK
|
|
288
|
+
FIRECRACKER, StickyRiceBalls, HEARTBROKEN, POOP, StatusFlashOfInspiration, 18X, CLEAVER, Soccer
|
|
289
|
+
Basketball, GeneralDoNotDisturb, Status_PrivateMessage, GeneralInMeetingBusy, StatusReading, StatusInFlight, GeneralBusinessTrip, GeneralWorkFromHome
|
|
290
|
+
StatusEnjoyLife, GeneralTravellingCar, StatusBus, GeneralSun, GeneralMoonRest, MoonRabbit, Mooncake, JubilantRabbit
|
|
291
|
+
TV, Movie, Pumpkin, BeamingFace, Delighted, ColdSweat, FullMoonFace, Partying
|
|
292
|
+
GoGoGo, ThanksFace, SaluteFace, Shrug, ClownFace, HappyDragon
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
## References
|
|
296
|
+
|
|
297
|
+
- [lark-im](../SKILL.md) - all IM commands
|
|
298
|
+
- [lark-shared](../../lark-shared/SKILL.md) - authentication and global parameters
|
|
299
|
+
- Official emoji doc: `https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message-reaction/emojis-introduce`
|