Проблема с работой inline клавиатуры aiogram
я совсем новичок и пытаюсь сделать бота через aiogram который бы после команды /start генерировал массив кнопок с датой, которые приходят из бд. У меня получилось сделать сами кнопки, но я не понимаю как обработать их обработать правильно, чтобы ответ сохранялся в памяти и при этом выводились следующие кнопки из бд, с привязанной к выбранной дате временем
помогите, пожалуйста(
мой код:
storage = MemoryStorage()
bot = Bot(TOKEN_API)
dp = Dispatcher(bot, storage=storage)
class UserState(StatesGroup):
data = State()
time = State()
name = State()
#данные из бд
regdata = [[('15/04/23',), ('17/04/23',), ('20/04/23',), ('01/05/23',), ('17/05/23',)]]
regtime = [('10:00',), ('11:00',), ('12:00',), ('13:00',), ('14:00',)]
# кнопка для даты
reg_data = ''
for i in regdata:
reg_data = reg_data + str(i)
reg_data = list(reg_data.replace('(', '').replace(',', '').replace("'", '').split(")"))
del reg_data[-1]
kb_data = types.InlineKeyboardMarkup()
for i in reg_data:
kb_data.add(types.InlineKeyboardButton(text=str([i]).replace("[", '').replace("]", ''), callback_data=str([i]))))
# кнопки для времени
reg_time =''
for i in regtime:
reg_time = reg_time + str(i)
reg_time = list(reg_time.replace(')', '').replace('(', '').replace(',', '').replace('(()', '').split("'"))
for i in reg_time:
if len(str(i)) <= 3:
reg_time.remove(str(i))
kb_time = types.InlineKeyboardMarkup()
for i in reg_time:
kb_time.add(types.InlineKeyboardButton(text=str([i]).replace("[", '').replace("]", ''), callback_data=str([i])))
@dp.message_handler(commands=['start'])
async def start_command(message: types.Message):
await bot.send_message(message.from_user.id, text="Привет Выбери нужную дату!", reply_markup=kb_data)
@dp.callback_query_handler()
async def callback_data(callback_query: types.CallbackQuery):
await bot.answer_callback_query(callback_query.id)
reply_markup=kb_time)
await UserState.time.set()
@dp.message_handler(state=UserState.data)
async def get_data(message: types.Message, state: FSMContext):
await bot.send_message(message.from_user.id, text="Отлично! Теперь выберите время.", reply_markup=kb_time)
await state.update_data(data=message.text)
await UserState.name.set()