Как передать перменную из функции aiogram?

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

Я начинающий кодер решил написать своего бота на аиограме и столкнулся с ошибкой во время передачи переменной из функции. В интернете я нашел объяснения что нужно использовать FSM для этой проблемы. Но как в данную память переместить уже готовую переменную со значением, а не ждать ответа от пользователя, ответ не нашел ответ не нашел

def extract_unique_code(text):
    # Extracts the unique_code from the sent /start command.
    return text.split()[1] if len(text.split()) > 1 else None

@dp.message_handler(commands=["start"], state="*")
async def user_registration(message: types.Message):
    #Выделение id рефера
    unique_code = extract_unique_code(message.text)
    await ProfileStatesGroup.unique_code_true.set()
    print (unique_code)
    if unique_code:
        #если есть id рефера
        await bot.send_message(message.from_user.id, "Введите сообщение для отправки:")
        await ProfileStatesGroup.anonymessage.set()
    
    else:
        #если в ссылке нет id рефера
        pass

@dp.message_handler(state=ProfileStatesGroup.anonymessage)
async def answer_anonymessage(message:types.Message, state: FSMContext):
    answer = message.text
    await bot.send_message(message.from_user.id, "Отправлено!")
    print (unique_code)
    await bot.send_message(unique_code, "Вам пришло анонимное сообщение")
    await bot.send_message(unique_code, answer)   

речь идет о переменной unique_code

Ответы

▲ 0

Обработчики не могут выполняться одновременно все, поэтому что-то посчитав в одном - ты ничего не получишь в другом обработчике.

Тебе нужно понимать, что такое области видимости у функций, что такое локальная переменная и что такое глобальная переменная. Тогда ты поймешь куда лезешь, а пока ты начинающий кодер тебе до aiogram ещё далеко. Лучше учи базу - больше пользы будет.

Либо закажи у специалиста - быстрее получишь результат. Не обязательно становиться специалистом самому и быть им во всём. Время - бесценный ресурс, не восполняемый, поэтому не трать его на всякую ерунду, особенно в программировании.