feat(plugins): generalize native platform handler registration to every gateway platform
ctx.register_platform_handler(platform, factory) — the generic surface for plugins to wire native handlers into any platform adapter at connect() time. Factories receive (native, adapter): the platform's client/app object (PTB Application, discord.py Bot, slack_bolt AsyncApp, Teams App, DingTalkStreamClient, aiohttp web.Application) or None for adapters with no separate native object. - BasePlatformAdapter._wire_plugin_handlers(native): shared, isolated invocation helper — a raising plugin cannot block a platform connect. - All 27 connectable adapters call it: telegram/slack/teams/line/ api_server/msgraph_webhook wire before their dispatch tables freeze; the rest hook at connect success. - register_telegram_handler and get_telegram_handler_factories retained as thin back-compat aliases over the telegram bucket. - Source-invariant test guarantees every adapter with connect() keeps calling the hook.
This commit is contained in:
@@ -8432,6 +8432,10 @@ class APIServerAdapter(BasePlatformAdapter):
|
||||
self.name, self._host,
|
||||
)
|
||||
|
||||
# Plugin-registered native handlers (aiohttp web.Application —
|
||||
# router routes). Wired before AppRunner.setup() freezes the router.
|
||||
self._wire_plugin_handlers(self._app)
|
||||
|
||||
self._runner = web.AppRunner(self._app)
|
||||
await self._runner.setup()
|
||||
# Bind directly instead of probing 127.0.0.1 first — the old
|
||||
|
||||
Reference in New Issue
Block a user