queu.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import datetime
  2. from aiogram import exceptions
  3. from loader import scheduler, bot, logger
  4. from async_db import Database
  5. from utils import ScheduledMessage
  6. db = Database()
  7. async def supper_job(j: ScheduledMessage):
  8. start_time = datetime.datetime.now()
  9. """
  10. """
  11. if j.message_id is None:
  12. await bot.send_message(j.chat_id, j.text)
  13. await db.jobs_delete(j.message_id, j.chat_id, j.text)
  14. elif j.message_id == 2:
  15. try:
  16. message_to_delete = await bot.send_message(j.chat_id, j.text)
  17. await db.jobs_add(message_to_delete.message_id, message_to_delete.chat.id, message_to_delete.text)
  18. await db.jobs_delete(j.message_id, j.chat_id, j.text)
  19. logger.success(f'{j}\n{datetime.datetime.now() - start_time}')
  20. except exceptions.TelegramRetryAfter as e:
  21. logger.error(f"{e}\n{j}")
  22. return
  23. except Exception as e:
  24. logger.error(f"{e}\n{j}")
  25. return
  26. else:
  27. try:
  28. await bot.delete_message(j.chat_id, j.message_id)
  29. logger.success(f'{j}\n{datetime.datetime.now() - start_time}')
  30. except exceptions.TelegramBadRequest as e:
  31. if 'message to delete not found' in e.message:
  32. logger.error(f"{e.message}\n{j}")
  33. await db.jobs_delete(j.message_id, j.chat_id, j.text)
  34. async def create_tasks():
  35. jobs_list = await db.get_jobs()
  36. now = datetime.datetime.now()
  37. offset_second = 1
  38. for jobs in jobs_list:
  39. if offset_second % 5:
  40. offset_second += 1
  41. time = now + datetime.timedelta(seconds=offset_second)
  42. for j in jobs:
  43. scheduler.add_job(supper_job, args={j}, trigger='date', next_run_time=time)
  44. # if len(jobs) > 10:
  45. # continue
  46. # logger.debug(f"{offset_second}, {len(jobs)}, {time}")
  47. if offset_second >= 55:
  48. break
  49. offset_second += 1