Advertisement
py_tourist

Untitled

Apr 8th, 2022 (edited)
1,340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.04 KB | None | 0 0
  1. from time import strftime
  2. import re
  3.  
  4. from aiogram import types
  5. from aiogram.dispatcher import filters, FSMContext
  6.  
  7. from loader import dp
  8. from states.times_setting import Set_on
  9.  
  10. from utils.db_api import db
  11. from utils.misc import chats_schedule
  12.  
  13.  
  14. @dp.message_handler(filters.AdminFilter(True), commands=["time_to_on_m"])
  15. async def set_timer(msg: types.Message, state: FSMContext):
  16.     for job in chats_schedule.scheduler.get_jobs():
  17.         if job.args[0] == msg.chat.id:
  18.             if "on" in job.name:
  19.                 time_to_on = strftime("%H:%M", job.next_run_time.timetuple())
  20.                 await msg.answer(f"Сейчас подъём установлен на {time_to_on}")
  21.                 await state.update_data(cur_job_id=job.id)
  22.             else:
  23.                 await state.update_data(cur_job_id=None)
  24.     await Set_on.first()
  25.     await msg.answer("Укажите часы, от 0 до 23:")
  26.  
  27.  
  28. @dp.message_handler(filters.AdminFilter(True), state=Set_on.Q1)
  29. async def set_hours(msg: types.Message, state: FSMContext):
  30.     if msg.text.isdigit() is True and 0 <= int(msg.text) <= 23:
  31.         hours = msg.text
  32.         await state.update_data(hours=hours)
  33.         await msg.answer(f"Вы установили {msg.text} часов\n"
  34.                          "Установите минуты, от 0 до 59:")
  35.         await Set_on.next()
  36.     else:
  37.         await msg.answer(f"Часы не установлены, введите команду /time_to_on_m заново")
  38.         await state.reset_state()
  39.  
  40.  
  41. @dp.message_handler(filters.AdminFilter(True), state=Set_on.Q2)
  42. async def set_minutes(msg: types.Message, state: FSMContext):
  43.     if msg.text.isdigit() is True and 0 <= int(msg.text) <= 59:
  44.         minutes = msg.text
  45.         data = await state.get_data()
  46.         hours = data.get("hours")
  47.         if len(hours) < 2:
  48.             hours = "0" + hours
  49.         if len(minutes) < 2:
  50.             minutes = "0" + minutes
  51.         time_to_on = str(hours + ":" + minutes)
  52.  
  53.         if db.add_time_to_on(msg.chat.id, time_to_on=time_to_on):
  54.             data = await state.get_data()
  55.             cur_job_id = data.get("cur_job_id")
  56.             if cur_job_id is not None:
  57.                 cur_job = chats_schedule.scheduler.get_job(job_id=cur_job_id)
  58.                 cur_job.remove()
  59.                 chats_schedule.sched_msg_on(msg.chat.id, time_to_on)
  60.                 await msg.answer(f"вы переустановили подъем на {time_to_on}")
  61.                 await state.reset_state()
  62.             else:
  63.                 chats_schedule.sched_msg_on(msg.chat.id, time_to_on)
  64.                 await msg.answer(f"вы установили подъем на {time_to_on}")
  65.                 await state.reset_state()
  66.         else:
  67.             await msg.answer(f"Перезапустите бота командой /start")
  68.             await state.reset_state()
  69.     else:
  70.         await msg.answer(f"Минуты не установлены, введите команду /time_to_on_m заново")
  71.         await state.reset_state()
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement