Задать вопрос
@Tribian

Как передать переменную между декораторами?

Данные в переменной не обновляются при использовании в другом декораторе (надеюсь правильно сформулировал).

@dp.message_handler()
async def echo(message: types.Message, state: FSMContext):
    if message.text == 'запрос':
        # тут происходит запрос в БД и в переменную numbers выгружаются номера
         async with state.proxy() as take_user_data:
                take_user_data["numbers"] = all_numbers
         await Edit.waiting_Number.set()
         await bot.send_message(message.chat.id, 'Ok, напиши номер.')
         
         @dp.message_handler(state = Edit.waiting_Number)
         async def take(message: types.Message, state: FSMContext):
            async with state.proxy() as take_user_data:
                take_user_data["choose_number"] = message.text
             # сравниваем номер который ввел пользователь с номером из базы, если есть совпадение, то записываем его
             for res in take_user_data["numbers"]:
                 if int(take_user_data['choose_number']) == int(res):
                     catch += res


при первом заходе по слову "запрос" выгружается например 10 номеров (от 1 до 10) из базы и если пользователь пишет номер который есть в take_user_data["numbers"] (от 1 до 10), то все ок.
Но если после этого добавить в базу еще одну цифру или несколько (например до 15. В итоге получится от 1 до 15 в БД), то в функции def echo в take_user_data["numbers"] будут все номера от 1 до 15, а после перехода по состоянию Edit.waiting_Number в take_user_data["numbers"] останутся номера из самого первого захода (от 1 до 10).
Подскажите как использовать новые данные в take_user_data["numbers"] в функции def take.
Хочу обойтись без global
  • Вопрос задан
  • 92 просмотра
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы