@Korjiks

Как передать значение из @dp.callback_query_handler в функцию или другой хэндлер?

есть такой код :
выводим значения из базы данных в инлайн кнопки :
async def sql_date(message):
       rows = cur.execute('SELECT * FROM date ').fetchall()
       date_text = ""
       keyboar = types.InlineKeyboardMarkup(row_width=1)
       for ret in rows:
        date_text = ret[0]
        times = ret[1]
        keyboar.add(types.InlineKeyboardButton(ret[0], callback_data=ret[1]))
        print(date_text)
        print(times)
       await message.answer(' Выберити свободную дату', reply_markup=keyboar)


обрабатываем нажатие кнопки и выводим данные:
@dp.callback_query_handler(lambda call: True)
async def stoptopupcall(callback_query: types.CallbackQuery, state: FSMContext):
    await bot.answer_callback_query(callback_query.id)
    cur.execute('''SELECT time FROM date''') #получаем наши идентификаторы
    sqldata = cur.fetchall() # в список их
    sortdata = [] # список отсортированных
    for i in sqldata: # сортируем
        sortdata.append(i[0]) # добавляем отсортированные tgid в спислк
    if callback_query.data in sortdata: # делаем проверку есть ли наш идентификатор в тех кнопках
        userinfo =  cur.execute('''SELECT * FROM date WHERE time = (?)''', (callback_query.data, )).fetchall()
        await bot.send_message(callback_query.from_user.id, f'Время: {userinfo[0][1]}') # делаем вывод
        time = userinfo[0][1]


мне нужно из handler "@dp.callback_query_handler" а именно "time = userinfo[0][1]" передать в функцию

async def sql_time(message):
        keyboar = types.InlineKeyboardMarkup(row_width=1)
        for x in re.split(r'\s+', time):
        keyboar.add(types.InlineKeyboardButton(text=x, callback_data=x))
        await message.answer(' Выберите свободное время на:', reply_markup=keyboar)


тем самым вывести список Inline с данными из "time = userinfo[0][1]" кнопками как можно реализовать это ?
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы