Бот хранит target_id в состоянии fsm. < /li>
Затем бот спрашивает Пользователь по псевдонимам. Br /> Но проблема в том, что когда пользователь отправляет прозвище, бот читает его как общее сообщение и не связывает его с добавлением друга. < /p>
@dp.message(Form.add_friend)
async def process_friend_request(message: Message, state: FSMContext):
# Bot asks for a nickname after receiving target_id
await state.update_data(target_id=message.text)
await message.answer("
@dp.message(Form.set_nickname_requester)
async def handle_requester_nickname(message: Message, state: FSMContext):
# Bot processes nickname but treats message as regular text
data = await state.get_data()
target_id = data.get('target_id')
if target_id:
# Here we need to update friend's nickname but it's treated as regular message
update_friend_name(user_id=message.from_user.id, friend_id=target_id, nickname=message.text.strip())
await message.answer(f"
else:
await message.answer("
< /code>
Ожидаемое поведение: < /p>
После того, как пользователь отправляет запрос в друзья, бот должен попросить прозвище. < /p>
Когда пользователь отправляет псевдоним, бот должен сохранить его как прозвище для добавленного друга. То, что состояние правильно обновляется с помощью target_id, но второе сообщение (прозвище) рассматривается как обычное сообщение, и бот не связывает его с Target_id.
Я попытался добавить дополнительные проверки состояния, но проблема сохраняется. Предполагаемое прозвище для друга.
FSM не является должным образом связывает ник с помощью правильного target_id.
Вопросы:
Почему прозвище не обрабатывается как часть потока FSM? Обычное сообщение?>
Подробнее здесь: https://stackoverflow.com/questions/794 ... fter-addin