Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # .env:
- # BOT_TOKEN=6545:hfif
- # SERVER_HOST=localhost
- # SERVER_PORT=8080
- # BASE_URL=your_site.com
- # MAIN_WEBHOOK=/webhook/main
- # MINION_WEBHOOK=/webhook/minion/{bot_token}
- def register_minions(
- minions: Any,
- bots_settings: dict,
- app: Application,
- ):
- minion_webhook = os.getenv('MINION_WEBHOOK')
- for minion in minions:
- dp = Dispatcher(storage=storage)
- dp.include_router(minion.router)
- TokenBasedRequestHandler(
- dispatcher=dp,
- bot_settings=bots_settings,
- ).register(
- app,
- path=minion_webhook,
- )
- setup_application(app, dp)
- def register_main_bot(
- dp: Dispatcher,
- bot_settings: dict,
- app: Application,
- ) -> None:
- bot = Bot(token=os.getenv('BOT_TOKEN'), **bot_settings)
- SimpleRequestHandler(
- dispatcher=dp,
- bot=bot
- ).register(
- app,
- path=os.getenv('MAIN_WEBHOOK')
- )
- setup_application(app, dp, bot=bot)
- async def feed_multibot(bot: Bot) -> None:
- # For minions
- minion_webhook = f"{os.getenv('BASE_URL')}{os.getenv('MINION_WEBHOOK')}"
- for token in await get_minions_tokens():
- minion = Bot(token=token, session=bot.session)
- await minion.delete_webhook(drop_pending_updates=True)
- await minion.set_webhook(
- url=minion_webhook.format(bot_token=token),
- max_connections=100,
- )
- # For main bot
- await bot.delete_webhook(drop_pending_updates=True)
- await bot.set_webhook(
- url=f"{os.getenv('BASE_URL')}{os.getenv('MAIN_WEBHOOK')}",
- max_connections=100,
- )
- async def on_shutdown(bot: Bot) -> None:
- await bot.delete_webhook()
- def main():
- app = web.Application()
- bot_settings = {
- 'session': AiohttpSession(),
- 'parse_mode': 'HTML',
- }
- dp = Dispatcher()
- dp.include_router(main_router)
- register_minions(minions, bot_settings, app)
- register_main_bot(dp, bot_settings, app)
- dp.startup.register(feed_multibot)
- dp.startup.register(on_shutdown)
- web.run_app(
- app=app,
- host=os.getenv('SERVER_HOST'),
- port=os.getenv('SERVER_PORT'),
- )
Advertisement
Add Comment
Please, Sign In to add comment