{"record":{"id":"8252ab509ab10461","repo":"jackwener/OpenCLI","slug":"no-owned-or-subscribed-lists-found","errorCode":null,"errorMessage":"No owned or subscribed lists found","messagePattern":"No owned or subscribed lists found","errorType":"exception","errorClass":"EmptyResultError","httpStatus":null,"severity":"info","filePath":"clis/twitter/lists.js","lineNumber":174,"sourceCode":"            'X-Csrf-Token': ct0,\n            'X-Twitter-Auth-Type': 'OAuth2Session',\n            'X-Twitter-Active-User': 'yes',\n        });\n        const apiUrl = buildUrl(queryId);\n        const data = await page.evaluate(`async () => {\n            const r = await fetch(${JSON.stringify(apiUrl)}, { headers: ${headers}, credentials: 'include' });\n            return r.ok ? await r.json() : { error: r.status };\n        }`);\n        if (data?.error) {\n            throw new CommandExecutionError(describeTwitterApiError('ListsManagementPageTimeline', data.error));\n        }\n        const seen = new Set();\n        if (!getListsManagementInstructions(data)) {\n            throw new CommandExecutionError('Twitter lists returned an unexpected payload shape');\n        }\n        const lists = parseListsManagement(data, seen);\n        if (lists.length === 0) {\n            throw new EmptyResultError('twitter lists', 'No owned or subscribed lists found');\n        }\n        return lists.slice(0, limit);\n    },\n});\n","sourceCodeStart":156,"sourceCodeEnd":179,"githubUrl":"https://github.com/jackwener/OpenCLI/blob/49907e53dc3ade5c223ff0c4c2c2785687cec4e6/clis/twitter/lists.js#L156-L179","documentation":"EmptyResultError thrown when the Twitter lists payload was valid (shape check passed) but parseListsManagement extracted zero owned or subscribed lists. This is a semantic 'no data' signal rather than a malfunction: the account genuinely has no lists, or lists exist but were filtered out (e.g. the seen-set dedupe or pagination captured nothing).","triggerScenarios":"Calling the 'twitter lists' command with an account that owns no lists and subscribes to none, or where the captured payload's list entries are all duplicates/filtered so the parsed array is empty before list.slice(0, limit).","commonSituations":"New or cleaned-up X accounts with no lists; accounts whose lists are private/hidden in the current session; rate-limited or partially loaded pages where pagination never surfaced list entries.","solutions":["Verify the account actually has lists by visiting https://x.com/<username>/lists in the same browser session.","Create at least one list or subscribe to one, then re-run the command.","Confirm the session is authenticated as the intended account (a different profile may be loaded in the automation browser).","If lists exist but the command still returns empty, capture the raw payload and report a parsing regression to the CLI maintainers."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"const lists = await twitterLists({ limit: 20 }).catch(err =>\n  err instanceof EmptyResultError ? [] : Promise.reject(err));\nif (lists.length === 0) console.log('Account has no owned/subscribed lists');","typeGuard":null,"tryCatchPattern":"try {\n  const lists = await twitterLists({ limit });\n} catch (err) {\n  if (err.name === 'EmptyResultError') {\n    console.info('No lists on this account — nothing to do');\n    return [];\n  }\n  throw err;\n}","preventionTips":["Treat EmptyResultError as an expected empty state, not a bug","Confirm the authenticated account is the one you intend to inspect","Check the account's lists page manually before automating against it"],"tags":["twitter","empty-result","lists","no-data"],"backgroundTag":"empty-result-set","analyzedSha":"49907e53dc3ade5c223ff0c4c2c2785687cec4e6","analyzedAt":"2026-08-29T08:14:47.543Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}