Как получить данные из функции с CallbackQuery в функцию с message
Имеется функция main_analise, вызываемая с inline кнопки (все функции очень сильно упрощены для понимания)
async def main_analise(call: CallbackQuery, bot: Bot, state: FSMContext):
await call.answer()
context_data = await state.get_data()
number = context_data_json.get('number') # получаем некое значение из машины состояний
a = number + number
await bot.send_message(call.from_user.id, 'a', reply_markup=InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text='Указать нужное число', callback_data='choise_new')]]))
async def choise_new(call: CallbackQuery, bot: Bot, state: FSMContext): # вызывается с inline кнопки из функции выше , main_analise
await call.answer()
await bot.send_message(call.from_user.id, f'Введите новое число')
await state.set_state(StepsAnalise.choise_new_get) # ожидаем ввода числа для перехода к ф-и choise_new_get
async def choise_new_get(message: Message, bot: Bot, state: FSMContext, call: CallbackQuery):
number = message.text
await state.update_data(number=number)
await bot.send_message(message.from_user.id, f'Новое число введено')
await main_analise(call, bot, state)
При таком написании аргументов ф-и choise_new_get вылетает ошибка missing 1 required positional argument: 'call' Если из аргументов убрать call: CallbackQuery, то ошибка та же
async def choise_new_get(call: CallbackQuery, bot: Bot, state: FSMContext):
number = call.message.text # нерабочий код
await state.update_data(number=number)
await bot.send_message(call.from_user.id, f'Новое число введено')
await main_analise(call, bot, state)
при таком написании функции choise_new_get не удается получить значение number, да и функция callback уже не с inline кнопки запускается. Как в таких случаях поступать? Ниже хэндлеры
def router.analise_number(router: Router) -> None:
router.callback_query.register(main_analise, F.data=='main_analise')
router.callback_query.register(choise_new, F.data=='choise_new')
router.message.register(choise_new_get, StepsAnalise.choise_new_get)
Возможно ли совместить в одной функции и call: CallbackQuery и message: Message и есть какое-то более интересное решение?