bot.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import asyncio
  2. import datetime
  3. import queu
  4. import utils
  5. from handlers import start, stop_words, require_channels, ads, users_message, admin_menu, help
  6. from loader import bot, dp, db, scheduler, logger
  7. async def startup(bot):
  8. await utils.default_command(bot)
  9. me = await bot.get_me()
  10. logger.info(f"bot started | {me.first_name} @{me.username}")
  11. async def shut():
  12. logger.info("bot stopped")
  13. async def main():
  14. db.create_table_()
  15. scheduler.start()
  16. context = {
  17. "users": db.get_all_clients(),
  18. 'stop_words': db.select_default_word(),
  19. # 'chats': db.select_all_chats(),
  20. }
  21. dp.include_router(stop_words.router)
  22. dp.include_router(users_message.router)
  23. dp.include_router(require_channels.router)
  24. dp.include_router(ads.router)
  25. dp.include_router(admin_menu.router)
  26. dp.include_router(start.router)
  27. dp.include_router(help.router)
  28. scheduler.add_job(queu.create_tasks, trigger='interval', seconds=60, next_run_time=datetime.datetime.now())
  29. # scheduler.add_job(utils.validate_db_data, trigger='interval', hours=30, next_run_time=datetime.datetime.now())
  30. await startup(bot)
  31. await bot.delete_webhook()
  32. await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types(), context=context, skip_updates=True)
  33. if __name__ == '__main__':
  34. try:
  35. asyncio.run(main())
  36. except KeyboardInterrupt:
  37. asyncio.run(shut())