{"record":{"id":"3cae19e5038070eb","repo":"HKUDS/nanobot","slug":"feishu-websocket-runner-did-not-start","errorCode":null,"errorMessage":"Feishu WebSocket runner did not start","messagePattern":"Feishu WebSocket runner did not start","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"nanobot/channels/feishu/websocket.py","lineNumber":77,"sourceCode":"            asyncio.run_coroutine_threadsafe(self._start_client(key, client), loop)\n        )\n\n    async def stop_client(self, key: str) -> None:\n        \"\"\"Stop one client runtime if it is active.\"\"\"\n        loop = self._loop\n        if loop is None or loop.is_closed():\n            return\n        await asyncio.wrap_future(asyncio.run_coroutine_threadsafe(self._stop_client(key), loop))\n\n    def _ensure_loop(self) -> asyncio.AbstractEventLoop:\n        with self._lock:\n            if self._loop is not None and not self._loop.is_closed():\n                return self._loop\n            self._ready.clear()\n            self._thread = threading.Thread(target=self._run_loop, name=\"feishu-ws\", daemon=True)\n            self._thread.start()\n            if not self._ready.wait(timeout=10) or self._loop is None:\n                raise RuntimeError(\"Feishu WebSocket runner did not start\")\n            return self._loop\n\n    def _run_loop(self) -> None:\n        loop = asyncio.new_event_loop()\n        asyncio.set_event_loop(loop)\n        try:\n            import lark_oapi.ws.client as lark_ws_client\n\n            lark_ws_client.loop = loop\n            self._loop = loop\n            self._ready.set()\n            loop.run_forever()\n        finally:\n            with suppress(Exception):\n                loop.run_until_complete(loop.shutdown_asyncgens())\n            loop.close()\n\n    async def _start_client(self, key: str, client: _LarkWsClient) -> None:","sourceCodeStart":59,"sourceCodeEnd":95,"githubUrl":"https://github.com/HKUDS/nanobot/blob/42f37dc4c0e409eac7818a82d165c5f2757bc075/nanobot/channels/feishu/websocket.py#L59-L95","documentation":"Error \"Feishu WebSocket runner did not start\" thrown in HKUDS/nanobot.","triggerScenarios":"Thrown at nanobot/channels/feishu/websocket.py:77 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"}