@kollfun

Как обратиться к элементу функции без ее взаимодействия?

@dp.message_handler()
    async def search_for_film(message: types.Message) -> None:
        await send_result(message)
    
    async def send_result() -> None:
        response = api_client.films.send_search_by_keyword_request(SearchByKeywordRequest(message.text))
        id = response.films[0].film_id
        response = api_client.films.send_film_request(FilmRequest(id))
        fx = \
            f"*{response.film.name_ru}* ({response.film.year})\n" \
            f"Рейтинг: *{response.film.rating_kinopoisk}*⭐\n\n" \
            f"{response.film.short_description}" 
    
        await bot.send_photo(message.chat.id, response.film.poster_url, fx, reply_markup=kb.inline_kb_full,
                                 parse_mode=types.ParseMode.MARKDOWN)
    
    
    @dp.callback_query_handler(lambda c: c.data == 'fulldscr')
    async def show(callback_query: types.CallbackQuery):
        await bot.send_message(callback_query.from_user.id, response.film.description)


Суть такая: пользователь вводит название фильма и по нему находится `response`.

@dp.callback_query_handler(lambda c: c.data == 'fulldscr')
    async def show(callback_query: types.CallbackQuery):
        await bot.send_message(callback_query.from_user.id, response.film.description)


Это проверка на нажатие inline кнопки. Как мне заменить это `response.film.description`, чтобы все работало?
(Я не сильно понимаю питон, поэтому когда я пытаюсь дописать что-то типа `response = send_result()`, то функции требуется новое значения типа `message`.)

Как мне взять значение `response` из функции `send_result` и вставить его в `@dp.callback_query_handler`?
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Kadabrov
в функции
async def send_result() -> None:
нужные вам данные сохраняйте в FSMContext хранилище
Конечные автоматы (FSM)
а в функции
async def show(callback_query: types.CallbackQuery):

достаете нужные вам данные
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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