{"record":{"id":"f254a01d8f5028c2","repo":"HKUDS/nanobot","slug":"slack-target-user-handle-is-empty","errorCode":null,"errorMessage":"Slack target user handle is empty","messagePattern":"Slack target user handle is empty","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"nanobot/channels/slack/runtime.py","lineNumber":343,"sourceCode":"                        self._target_cache[cache_key] = channel_id\n                        return channel_id\n            response_metadata = cast(\n                dict[str, Any],\n                response.get(\"response_metadata\") or {},\n            )\n            cursor = str(response_metadata.get(\"next_cursor\") or \"\").strip()\n            if not cursor:\n                break\n\n        raise ValueError(\n            f\"Slack channel '{name}' was not found. Use a joined channel name like \"\n            f\"'#general' or a concrete channel ID.\"\n        )\n\n    async def _resolve_user_handle(self, handle: str) -> str:\n        normalized = self._normalize_target_name(handle)\n        if not normalized:\n            raise ValueError(\"Slack target user handle is empty\")\n\n        cache_key = f\"user:{normalized}\"\n        if cache_key in self._target_cache:\n            return self._target_cache[cache_key]\n\n        cursor: str | None = None\n        web_api = self._require_web_api()\n        while True:\n            response = cast(\n                dict[str, Any],\n                await web_api.users_list(limit=200, cursor=cursor),\n            )\n            for member_value in cast(list[object], response.get(\"members\", [])):\n                member = cast(dict[str, Any], member_value)\n                if self._member_matches_handle(member, normalized):\n                    user_id = str(member.get(\"id\") or \"\")\n                    if not user_id:\n                        continue","sourceCodeStart":325,"sourceCodeEnd":361,"githubUrl":"https://github.com/HKUDS/nanobot/blob/42f37dc4c0e409eac7818a82d165c5f2757bc075/nanobot/channels/slack/runtime.py#L325-L361","documentation":"Error \"Slack target user handle is empty\" thrown in HKUDS/nanobot.","triggerScenarios":"Thrown at nanobot/channels/slack/runtime.py:343 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"42f37dc4c0e409eac7818a82d165c5f2757bc075","analyzedAt":"2026-08-26T00:18:52.276Z","schemaVersion":2},"datasetVersion":"2026-08-26T04:18:47.238Z"}