From a4e61b97181ad9e1a6e98309faae75d4cbc9685b Mon Sep 17 00:00:00 2001 From: houzhicong Date: Mon, 15 Jun 2026 18:28:49 +0800 Subject: [PATCH] fix: reject meeting numbers for vc events --- shortcuts/vc/vc_meeting_events.go | 3 +++ shortcuts/vc/vc_meeting_events_test.go | 20 +++++++++++++++++++ .../lark-vc-agent-meeting-events.md | 1 + 3 files changed, 24 insertions(+) diff --git a/shortcuts/vc/vc_meeting_events.go b/shortcuts/vc/vc_meeting_events.go index ebd308e03..48df42ac5 100644 --- a/shortcuts/vc/vc_meeting_events.go +++ b/shortcuts/vc/vc_meeting_events.go @@ -156,6 +156,9 @@ func validateMeetingEventsMeetingID(meetingID string) error { if meetingID == "" { return errs.NewValidationError(errs.SubtypeInvalidArgument, "--meeting-id is required").WithParam("--meeting-id") } + if validMeetingNumber(meetingID) { + return errs.NewValidationError(errs.SubtypeInvalidArgument, "--meeting-id must be a long meeting_id, not a 9-digit meeting number; use +meeting-join or +meeting-list-active to get meeting_id").WithParam("--meeting-id") + } value, err := strconv.ParseInt(meetingID, 10, 64) if err != nil || value <= 0 { return errs.NewValidationError(errs.SubtypeInvalidArgument, "--meeting-id must be a positive integer, got %q", meetingID).WithParam("--meeting-id") diff --git a/shortcuts/vc/vc_meeting_events_test.go b/shortcuts/vc/vc_meeting_events_test.go index b920e0acb..2e9e73547 100644 --- a/shortcuts/vc/vc_meeting_events_test.go +++ b/shortcuts/vc/vc_meeting_events_test.go @@ -262,6 +262,26 @@ func TestMeetingEvents_Validation_InvalidMeetingID(t *testing.T) { } } +func TestMeetingEvents_Validation_RejectsMeetingNumber(t *testing.T) { + runtime := newMeetingEventsRuntime() + mustSetMeetingEventsFlag(t, runtime, "meeting-id", "732067044") + + err := VCMeetingEvents.Validate(context.Background(), runtime) + if err == nil { + t.Fatal("expected validation error for 9-digit meeting number") + } + if !strings.Contains(err.Error(), "not a 9-digit meeting number") { + t.Fatalf("unexpected error: %v", err) + } + var ve *errs.ValidationError + if !errors.As(err, &ve) { + t.Fatalf("expected *errs.ValidationError, got %T: %v", err, err) + } + if ve.Param != "--meeting-id" { + t.Errorf("Param = %q, want %q", ve.Param, "--meeting-id") + } +} + func TestMeetingEvents_Validation_InvalidTimeRange(t *testing.T) { runtime := newMeetingEventsRuntime() mustSetMeetingEventsFlag(t, runtime, "meeting-id", "7628568141510692381") diff --git a/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md b/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md index 3549f8718..b05332c3a 100644 --- a/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +++ b/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md @@ -251,6 +251,7 @@ lark-cli vc +meeting-events \ | 错误现象 | 根本原因 | 解决方案 | |---------|---------|---------| | `--meeting-id is required` | 未传入 `--meeting-id` | 传入长数字 `meeting.id` | +| `not a 9-digit meeting number` | 把 9 位会议号误传给 `--meeting-id` | 先用 `+meeting-join --meeting-number <9位号>` 或 `+meeting-list-active` 拿长数字 `meeting_id` | | `10005 bot is not in meeting` | bot 从未真实入会该会议;或会议已结束但 bot 从未在会中出现过 | 先 `+meeting-join --meeting-number <9位号>` 真实入会再查;如果会议已经结束且当时 bot 没进过会,本接口也拉不到数据。**如果只是想看参会人快照,改用 `lark-cli vc meeting get --params '{"meeting_id":""}' --with-participants`**(不依赖 bot 身份参会) | | `20001 meeting_status_MEETING_END` | 会议已结束且已超出后端允许的 5 分钟宽限窗口 | 本接口不再适合继续拉取事件。若要拿纪要文档或逐字稿 token,用 `lark-cli vc +notes --meeting-ids `;若要拿 AI 产物(summary / todos / chapters)或导出逐字稿文件,先用 `lark-cli vc +recording --meeting-ids ` 拿 `minute_token`,再用 `lark-cli vc +notes --minute-tokens `;参会人请用 `lark-cli vc meeting get --params '{"meeting_id":""}' --with-participants` | | `20002 meeting not exist` | `meeting_id` 错误,或会议实例当前已不可获取(常见于把 9 位会议号当 meeting_id 传) | 确认传入的是长数字 `meeting_id`,不是 9 位会议号 |