{"record":{"id":"f81d8c5246fe2e26","repo":"chenhg5/cc-connect","slug":"at-users-requires-a-value","errorCode":null,"errorMessage":"--at-users requires a value","messagePattern":"--at-users requires a value","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/cc-connect/send.go","lineNumber":141,"sourceCode":"\t\t\ti++\n\t\t\tfilePaths = append(filePaths, args[i])\n\t\tcase \"--audio\":\n\t\t\tif i+1 >= len(args) {\n\t\t\t\treturn req, \"\", fmt.Errorf(\"--audio requires a path\")\n\t\t\t}\n\t\t\ti++\n\t\t\taudioPaths = append(audioPaths, args[i])\n\t\tcase \"--video\":\n\t\t\tif i+1 >= len(args) {\n\t\t\t\treturn req, \"\", fmt.Errorf(\"--video requires a path\")\n\t\t\t}\n\t\t\ti++\n\t\t\tvideoPaths = append(videoPaths, args[i])\n\t\tcase \"--stdin\":\n\t\t\tuseStdin = true\n\t\tcase \"--at-users\":\n\t\t\tif i+1 >= len(args) {\n\t\t\t\treturn req, \"\", fmt.Errorf(\"--at-users requires a value\")\n\t\t\t}\n\t\t\ti++\n\t\t\tfor _, uid := range strings.Split(args[i], \",\") {\n\t\t\t\tuid = strings.TrimSpace(uid)\n\t\t\t\tif uid != \"\" {\n\t\t\t\t\treq.AtUsers = append(req.AtUsers, uid)\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"--at-all\":\n\t\t\treq.AtAll = true\n\t\tcase \"--data-dir\":\n\t\t\tif i+1 >= len(args) {\n\t\t\t\treturn req, \"\", fmt.Errorf(\"--data-dir requires a value\")\n\t\t\t}\n\t\t\ti++\n\t\t\tdataDir = args[i]\n\t\tcase \"--help\", \"-h\":\n\t\t\treturn req, \"\", errSendUsage","sourceCodeStart":123,"sourceCodeEnd":159,"githubUrl":"https://github.com/chenhg5/cc-connect/blob/4000b2338aa6e850c99df54f8b0ed6ed7460b401/cmd/cc-connect/send.go#L123-L159","documentation":"The --at-users flag of `cc-connect send` expects a comma-separated list of user IDs as its value. parseSendArgs returns \"--at-users requires a value\" when the flag has no following argument. The value is later split on commas and trimmed into the request's AtUsers list.","triggerScenarios":"`cc-connect send --at-users` with no list; `cc-connect send --at-users --at-all`; empty variable expansion leaving only the flag.","commonSituations":"User IDs stored in a config/env that is unset; passing IDs on separate lines without quoting; assuming --at-users is boolean like --at-all.","solutions":["Pass a comma-separated list: `--at-users uid1,uid2`.","Quote the list if it contains spaces.","If you want to mention everyone, use the boolean `--at-all` instead of a bare --at-users.","Check that the env/variable holding the IDs is non-empty."],"exampleFix":"// before\ncc-connect send --at-users --message \"hi\"\n// after\ncc-connect send --at-users ou_123,ou_456 --message \"hi\"","handlingStrategy":"validation","validationCode":"USERS=\"uid1,uid2\"\n[ -n \"$USERS\" ] || { echo \"at-users list empty\"; exit 1; }\ncc-connect send --at-users \"$USERS\" --message hi","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pass a quoted comma-separated list.","Use --at-all for mentioning everyone instead of an empty --at-users.","Verify env/config supplying user IDs is populated.","Trim stray newlines from the ID list."],"tags":["cli","argument-parsing","mentions"],"backgroundTag":"missing-required-flag","analyzedSha":"4000b2338aa6e850c99df54f8b0ed6ed7460b401","analyzedAt":"2026-09-06T11:45:09.575Z","contentChangedAt":"2026-09-06T11:45:09.575Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}