Ошибка в хэндлере
@dp.callback_query_handler(text=f'{where_cat["bron_slug"]}', state=Send.up)
async def bron(call: types.CallbackQuery):
lang = await db.select_user(tg_id=call.from_user.id)
data = await state.get_data()
a = data.get("a")
try:
for i in range(1, 100):
a = call.message.message_id - i
await bot.delete_message(chat_id=call.message.chat.id, message_id=a)
except MessageToDeleteNotFound:
await call.message.delete()
now = datetime.datetime.now()
markup = create_calendar(now.year, now.month)
if lang['lang'] == 'ru':
await call.message.answer("Пожалуйста, выберите дату прибытия в отель\n\n"
f"Сегодня: {now.year}", reply_markup=markup)
await Admin.first.set()
elif lang['lang'] == 'en':
await call.message.answer("Please, choose the date of arrival at the hotel\n\n"
f"Today: {now.year}", reply_markup=markup)
await Admin.first.set()
elif lang['lang'] == 'uz':
await call.message.answer("Iltimos, mehmonxonaga kelish sanansini tanlang\n\n"
f"Bugun: {now.year}", reply_markup=markup)
await Admin.first.set()
@dp.callback_query_handler(state=Admin.first)
async def inline11(call: types.CallbackQuery, state: FSMContext):
now = datetime.datetime.now()
lang = await db.select_user(tg_id=call.from_user.id)
a = separate_callback_data(call.data)
(_, action, year, month, day) = a
curr = datetime.datetime(int(year), int(month), 1)
if action == 'IGNORE':
pass
elif action == "DAY":
ret_data = True, datetime.datetime(int(year), int(month), int(day))
a = []
if lang['lang'] == 'ru':
a = ['', 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь',
'Ноябрь', 'Декабрь']
elif lang['lang'] == 'en':
a = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October',
'November December']
elif lang['lang'] == 'uz':
a = ['', 'yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avgust', 'sentyabr', 'oktyabr',
"Noyabr dekabr"]
mon = (ret_data[1].strftime("%m"))
month = (a[int(mon) % 12])
day = (ret_data[1].strftime("%d"))
await state.update_data(
{'chekday1': ret_data[1]}
)
await state.update_data(
{'vis_year': year}
)
await state.update_data(
{"vis_month": month}
)
await state.update_data(
{"vis_day": day}
)
await Admin.second.set()
elif action == "PREV-MONTH":
pre = curr - datetime.timedelta(days=1)
await call.message.edit_text("Пожалуйста, выберите дату прибытия в отель\n\n"
f"Сегодня: {now.year}",
reply_markup=create_calendar(int(pre.year), int(pre.month)))
elif action == "NEXT-MONTH":
ne = curr + datetime.timedelta(days=31)
await call.message.edit_text("Пожалуйста, выберите дату прибытия в отель\n\n"
f"Сегодня: {now.year}", reply_markup=create_calendar(int(ne.year), int(ne.month)))
else:
await call.message.edit_text(text="Что-то пошло не так!", reply_markup=create_calendar(now.year, now.month))
await Send.up.set()
второй хэндлер работает через раз на пример когда я нажимаю на одну из инлайн кнопок оно грузится но после 2 нажатия работает первое нажатие хэндлер видит но не обрабатывает
Функция календаря
def create_calendar(year=None,month=None):
"""
Create an inline keyboard with the provided year and month
:param int year: Year to use in the calendar, if None the current year is used.
:param int month: Month to use in the calendar, if None the current month is used.
:return: Returns the InlineKeyboardMarkup object with the calendar.
"""
now = datetime.datetime.now()
if year == None: year = now.year
if month == None: month = now.month
data_ignore = create_callback_data("IGNORE", year, month, 0)
keyboard = []
#First row - Month and Year
row=[]
row.append(InlineKeyboardButton(calendar.month_name[month]+" "+str(year),callback_data=data_ignore))
keyboard.append(row)
#Second row - Week Days
row=[]
for day in ["Пн","Вт","Ср","Чт","Пт","Сб","Вс"]:
row.append(InlineKeyboardButton(day,callback_data=data_ignore))
keyboard.append(row)
my_calendar = calendar.monthcalendar(year, month)
for week in my_calendar:
row=[]
for day in week:
if(day==0):
row.append(InlineKeyboardButton(" ",callback_data=data_ignore))
else:
row.append(InlineKeyboardButton(str(day),callback_data=create_callback_data("DAY",year,month,day)))
keyboard.append(row)
#Last row - Buttons
row=[]
row.append(InlineKeyboardButton("<",callback_data=create_callback_data("PREV-MONTH",year,month,day)))
row.append(InlineKeyboardButton(" ",callback_data=data_ignore))
row.append(InlineKeyboardButton(">",callback_data=create_callback_data("NEXT-MONTH",year,month,day)))
keyboard.append(row)
return InlineKeyboardMarkup(inline_keyboard=keyboard)