Как из одной функции передать инфу в другую функцию

Рейтинг: 0Ответов: 1Опубликовано: 11.02.2023

Есть два хендлера, в одном генерится картинка, и отправляется пользователю В другом нужно что бы эта же картинка после нажатия на определенную инлайн кнопку сохранилась в БД.

@dp.message_handler(state=GiveValentine.text)
async def send_step3(message: types.Message, state: FSMContext):
    if len(message.text) > 100:
        await message.answer(text="Длина текста не должна превышать 100 символов. Немного сократи текст 😊")
    else:
        async with state.proxy() as data:
            data['text'] = message.text

        text = data.get('text')
        image = image_data(text)
        await bot.send_photo(chat_id=message.from_user.id, photo=test, reply_markup=kb.check())
        await GiveValentine.next()


@dp.callback_query_handler(text='send', state=GiveValentine.approve)
async def send_step4(callback: types.CallbackQuery, state: FSMContext):
    await callback.message.edit_reply_markup()
    async with state.proxy() as data:
        data['approve'] = True
    user_id = data.get('user_id')
ВОТ ТУТ ПРОБЛЕМА

    await db.main(user_id=user_id, image= ??? )
    await callback.message.answer(text="Твоя валентинка отправлена!", reply_markup=kb.main_menu())
    await state.finish()

Ответы

▲ 0

Можно обернуть обе функции в класс

class Photo:
     @dp.message_handler(state=GiveValentine.text)
     async def send_step3(self, message: types.Message, state: FSMContext):
         if len(message.text) > 100:
             await message.answer(text="Длина текста не должна превышать 100 символов. Немного сократи текст 😊")
         else:
             async with state.proxy() as data:
                 data['text'] = message.text
     
             text = data.get('text')
             self.image = image_data(text)
             await bot.send_photo(chat_id=message.from_user.id, photo=test, reply_markup=kb.check())
             await GiveValentine.next()
     @dp.callback_query_handler(text='send', state=GiveValentine.approve)
     async def send_step4(self, callback: types.CallbackQuery, state: FSMContext):
         await callback.message.edit_reply_markup()
         async with state.proxy() as data:
             data['approve'] = True
         self.user_id = data.get('user_id')

     
         await db.main(user_id=user_id, image="???" )
         await callback.message.answer(text="Твоя валентинка отправлена!", reply_markup=kb.main_menu())
         await state.finish()