Guest User

pseudo aiogram multibot

a guest
Jul 19th, 2023
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. # .env:
  2. # BOT_TOKEN=6545:hfif
  3. # SERVER_HOST=localhost
  4. # SERVER_PORT=8080
  5. # BASE_URL=your_site.com
  6. # MAIN_WEBHOOK=/webhook/main
  7. # MINION_WEBHOOK=/webhook/minion/{bot_token}
  8.  
  9.  
  10. def register_minions(
  11. minions: Any,
  12. bots_settings: dict,
  13. app: Application,
  14. ):
  15. minion_webhook = os.getenv('MINION_WEBHOOK')
  16.  
  17. for minion in minions:
  18. dp = Dispatcher(storage=storage)
  19. dp.include_router(minion.router)
  20.  
  21. TokenBasedRequestHandler(
  22. dispatcher=dp,
  23. bot_settings=bots_settings,
  24. ).register(
  25. app,
  26. path=minion_webhook,
  27. )
  28. setup_application(app, dp)
  29.  
  30.  
  31. def register_main_bot(
  32. dp: Dispatcher,
  33. bot_settings: dict,
  34. app: Application,
  35. ) -> None:
  36. bot = Bot(token=os.getenv('BOT_TOKEN'), **bot_settings)
  37.  
  38. SimpleRequestHandler(
  39. dispatcher=dp,
  40. bot=bot
  41. ).register(
  42. app,
  43. path=os.getenv('MAIN_WEBHOOK')
  44. )
  45. setup_application(app, dp, bot=bot)
  46.  
  47.  
  48. async def feed_multibot(bot: Bot) -> None:
  49. # For minions
  50. minion_webhook = f"{os.getenv('BASE_URL')}{os.getenv('MINION_WEBHOOK')}"
  51.  
  52. for token in await get_minions_tokens():
  53. minion = Bot(token=token, session=bot.session)
  54. await minion.delete_webhook(drop_pending_updates=True)
  55. await minion.set_webhook(
  56. url=minion_webhook.format(bot_token=token),
  57. max_connections=100,
  58. )
  59. # For main bot
  60. await bot.delete_webhook(drop_pending_updates=True)
  61. await bot.set_webhook(
  62. url=f"{os.getenv('BASE_URL')}{os.getenv('MAIN_WEBHOOK')}",
  63. max_connections=100,
  64. )
  65.  
  66.  
  67. async def on_shutdown(bot: Bot) -> None:
  68. await bot.delete_webhook()
  69.  
  70.  
  71. def main():
  72. app = web.Application()
  73. bot_settings = {
  74. 'session': AiohttpSession(),
  75. 'parse_mode': 'HTML',
  76. }
  77. dp = Dispatcher()
  78. dp.include_router(main_router)
  79.  
  80. register_minions(minions, bot_settings, app)
  81. register_main_bot(dp, bot_settings, app)
  82.  
  83. dp.startup.register(feed_multibot)
  84. dp.startup.register(on_shutdown)
  85.  
  86. web.run_app(
  87. app=app,
  88. host=os.getenv('SERVER_HOST'),
  89. port=os.getenv('SERVER_PORT'),
  90. )
Advertisement
Add Comment
Please, Sign In to add comment