浏览代码

Теперь нельзя выбрать дату позже текущей

root 2 年之前
父节点
当前提交
fd7e4b95e6
共有 3 个文件被更改,包括 32 次插入13 次删除
  1. 5 1
      bot/keyboards.py
  2. 3 1
      handlers/start.py
  3. 24 11
      handlers/user/make_events.py

+ 5 - 1
bot/keyboards.py

@@ -88,7 +88,11 @@ def make_calendar():
     button_after_tomorrow = InlineKeyboardButton(text="Послезавтра", callback_data="after_tomorrow")
 
     for i in range(1, days_in_month+1, 1):
-        date_i = InlineKeyboardButton(text=str(i), callback_data=f"date_2022-{str(month)}-{str(i)}")
+        if i < 10:
+            day = f"0{i}"
+        else:
+            day = i
+        date_i = InlineKeyboardButton(text=str(i), callback_data=f"date_2022-{str(month)}-{str(day)}")
         keyboard.insert(date_i)
     # keyboard.add(button_today, button_tomorrow, button_after_tomorrow)
     return keyboard

+ 3 - 1
handlers/start.py

@@ -15,7 +15,7 @@ async def start_cmd(message: types.Message):
     if not db.sql_fetchone(sql.check_id(message.from_user.id)):
         await message.answer(f"🤖Вас приветствует лакей ТТИТ🤖\n\n"
                              "Для доступа к функциям нужно пройти простую регистрацию\n", reply_markup=register_kb)
-    elif db.sql_fetchone(sql.check_approved(message.from_user.id)) == 0:
+    elif db.sql_fetchone(sql.check_approved(message.from_user.id)) == "0":
         await message.answer(f"Ваша заявка находится на рассмотрении", reply_markup=check_register_kb)
     else:
         await message.answer(f"🤖Вас приветствует лакей ТТИТ🤖\n"
@@ -52,8 +52,10 @@ async def get_report(message: types.Message, state: FSMContext):
     await new_bug(data)
     await message.delete()
 
+
 def main_register(dp: Dispatcher):
     dp.register_message_handler(start_cmd, commands=['start', 'help'])
     dp.register_message_handler(stop_cmd, commands=['stop'])
     dp.register_message_handler(send_report, commands=['bug'])
     dp.register_message_handler(get_report, state=SendBugState.send_bug)
+

+ 24 - 11
handlers/user/make_events.py

@@ -1,11 +1,15 @@
+import asyncio
+
+import aiogram
 from aiogram import types, Dispatcher
 from bot import database, sql
 from bot.keyboards import register_kb, make_calendar, events_kb, cancel_booking, main_kb
-from bot.functions import make_date, time_validator, normalize_time, to_quotes, check_overlap, beauty_booked_time
+from bot.functions import make_date, date_range, time_validator, normalize_time, to_quotes, check_overlap, beauty_booked_time
 from handlers.user.states import BookingState
 from aiogram.dispatcher.storage import FSMContext
 from bot import messages
 from handlers.admin.notifications import new_event
+import datetime
 
 
 async def make_event(message: types.message):
@@ -25,17 +29,26 @@ async def select_date(call: types.CallbackQuery, state: FSMContext):
     db = database.Database()
     date = call.data.split("_")[1]
     booked = db.sql_fetchall(sql.sql_booked_time(date))
-    await BookingState.start.set()
-    await state.update_data(date=to_quotes(date))
-    await state.update_data(owner=call.from_user.id)
-    if len(booked) == 0:
-        await call.message.edit_text(f"Вы выбрали дату: {date}\n"
-                                     f"На этот день мероприятий не заплпнированно", reply_markup=events_kb())
+    today = datetime.datetime.now()
+    if date >= datetime.datetime.strftime(today, '%Y-%m-%d'):
+        if len(booked) == 0:
+            await BookingState.start.set()
+            await state.update_data(date=to_quotes(date))
+            await state.update_data(owner=call.from_user.id)
+            await call.message.edit_text(f"Вы выбрали дату: {date}\n"
+                                         f"На этот день мероприятий не заплпнированно", reply_markup=events_kb())
+        else:
+            await BookingState.start.set()
+            await state.update_data(date=to_quotes(date))
+            await state.update_data(owner=call.from_user.id)
+            await call.message.edit_text(f"Вы выбрали дату: {date}\n\n"
+                                         f"Занятое время\n\n"
+                                         f"{beauty_booked_time(sorted(booked, key=lambda t: t['e_start'], reverse=False))}",
+                                         reply_markup=events_kb())
     else:
-        await call.message.edit_text(f"Вы выбрали дату: {date}\n\n"
-                                     f"Занятое время\n\n"
-                                     f"{beauty_booked_time(sorted(booked, key=lambda t: t['e_start'], reverse=False))}",
-                                     reply_markup=events_kb())
+        msg = await call.message.answer("Нельзя выбрать дату позже сегодняшней")
+        await asyncio.sleep(4)
+        await msg.delete()
 
 
 async def edit_date(call: types.CallbackQuery, state: FSMContext):