{"record":{"id":"e1f13c85986518f2","repo":"python-telegram-bot/python-telegram-bot","slug":"application-instances-should-be-built-via-the-a","errorCode":null,"errorMessage":"`Application` instances should be built via the `ApplicationBuilder`.","messagePattern":"`Application` instances should be built via the `ApplicationBuilder`\\.","errorType":"console","errorClass":"PTBUserWarning","httpStatus":null,"severity":"warning","filePath":"src/telegram/ext/_application.py","lineNumber":301,"sourceCode":"        updater: Updater | None,\n        job_queue: JQ,\n        update_processor: \"BaseUpdateProcessor\",\n        persistence: BasePersistence[UD, CD, BD] | None,\n        context_types: ContextTypes[CCT, UD, CD, BD],\n        post_init: (\n            Callable[[\"Application[BT, CCT, UD, CD, BD, JQ]\"], Coroutine[Any, Any, None]] | None\n        ),\n        post_shutdown: (\n            Callable[[\"Application[BT, CCT, UD, CD, BD, JQ]\"], Coroutine[Any, Any, None]] | None\n        ),\n        post_stop: (\n            Callable[[\"Application[BT, CCT, UD, CD, BD, JQ]\"], Coroutine[Any, Any, None]] | None\n        ),\n    ):\n        if not was_called_by(\n            inspect.currentframe(), Path(__file__).parent.resolve() / \"_applicationbuilder.py\"\n        ):\n            warn(\n                \"`Application` instances should be built via the `ApplicationBuilder`.\",\n                stacklevel=2,\n            )\n\n        self.bot: BT = bot\n        self.update_queue: asyncio.Queue[object] = update_queue\n        self.context_types: ContextTypes[CCT, UD, CD, BD] = context_types\n        self.updater: Updater | None = updater\n        self.handlers: dict[int, list[BaseHandler[Any, CCT, Any]]] = {}\n        self.error_handlers: dict[\n            HandlerCallback[object, CCT, None], bool | DefaultValue[bool]\n        ] = {}\n        self.post_init: (\n            Callable[[Application[BT, CCT, UD, CD, BD, JQ]], Coroutine[Any, Any, None]] | None\n        ) = post_init\n        self.post_shutdown: (\n            Callable[[Application[BT, CCT, UD, CD, BD, JQ]], Coroutine[Any, Any, None]] | None\n        ) = post_shutdown","sourceCodeStart":283,"sourceCodeEnd":319,"githubUrl":"https://github.com/python-telegram-bot/python-telegram-bot/blob/d3b69d2e9fb7af6c796f84516cfda751752c7cb7/src/telegram/ext/_application.py#L283-L319","documentation":"Application.__init__ warns when it is not instantiated from ApplicationBuilder, because manual construction easily produces misconfigured instances (missing job queue, persistence, updater wiring).","triggerScenarios":"Calling Application(...) directly (e.g. Application(bot=bot, update_queue=queue)) instead of ApplicationBuilder().token(...).build().","commonSituations":"Porting old code from version 13's Application(...) or DI/test code constructing Application manually.","solutions":["Use ApplicationBuilder().token(TOKEN).build()","For custom setups use ApplicationBuilder().bot(custom_bot).update_queue(q).build()"],"exampleFix":"# before\napp = Application(bot=bot, update_queue=asyncio.Queue())\n\n# after\napp = ApplicationBuilder().token(TOKEN).build()","handlingStrategy":"validation","validationCode":"# always build via builder\nfrom telegram.ext import ApplicationBuilder\napp = ApplicationBuilder().token(TOKEN).build()","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never instantiate Application directly; grep for 'Application(' in reviews"],"tags":["telegram","application","builder-pattern","construction"],"backgroundTag":"wrong-construction-pattern","analyzedSha":"d3b69d2e9fb7af6c796f84516cfda751752c7cb7","analyzedAt":"2026-08-28T16:18:54.805Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}