{"record":{"id":"7517db43d679b7e1","repo":"HKUDS/nanobot","slug":"telegram-bot-token-was-rejected-by-the-server","errorCode":null,"errorMessage":"Telegram bot token was rejected by the server","messagePattern":"Telegram bot token was rejected by the server","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"nanobot/channels/telegram/runtime.py","lineNumber":578,"sourceCode":"        if not self.config.token:\n            self.logger.error(\"bot token not configured\")\n            return\n\n        redirect_lib_logging(\"telegram\")\n        redirect_lib_logging(\"httpx\", level=\"WARNING\")\n\n        self._running = True\n        backoff = RESTART_BACKOFF_INITIAL_SECONDS\n        while self._running:\n            try:\n                await self._start_app()\n            except InvalidToken:\n                # A config error, not a blip: fail the channel. The scrubbed\n                # re-raise keeps PTB's token-bearing message out of the log.\n                await self._teardown_app()\n                self._running = False\n                self.logger.error(\"bot token rejected by Telegram\")\n                raise RuntimeError(\"Telegram bot token was rejected by the server\") from None\n            except Exception as e:\n                await self._teardown_app()\n                if not self._running:\n                    break\n                if not self._is_transient_startup_error(e):\n                    # Never heals on its own: fail instead of retrying forever\n                    # while ChannelManager keeps reporting the channel running.\n                    self._running = False\n                    self.logger.error(\"startup failed: {}\", self._format_telegram_error(e))\n                    raise\n                self.logger.error(\n                    \"startup failed: {}; retrying in {:.0f}s\",\n                    self._format_telegram_error(e),\n                    backoff,\n                )\n                await self._idle(backoff)\n                backoff = min(backoff * 2, RESTART_BACKOFF_MAX_SECONDS)\n                continue","sourceCodeStart":560,"sourceCodeEnd":596,"githubUrl":"https://github.com/HKUDS/nanobot/blob/42f37dc4c0e409eac7818a82d165c5f2757bc075/nanobot/channels/telegram/runtime.py#L560-L596","documentation":"Error \"Telegram bot token was rejected by the server\" thrown in HKUDS/nanobot.","triggerScenarios":"Thrown at nanobot/channels/telegram/runtime.py:578 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"}