AIOGRAM FSMCONTEXT Проблема: Прозвище пользователя неправильно обрабатывается после добавления запроса в друзьяPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 AIOGRAM FSMCONTEXT Проблема: Прозвище пользователя неправильно обрабатывается после добавления запроса в друзья

Сообщение Anonymous »

Я работаю над ботом Telegram, используя библиотеку AIOGRAM, и я сталкиваюсь с проблемой обработки FSM (конечный штат). Проблема в том, что после того, как пользователь отправит запрос на добавление друга, он должен установить прозвище для своего друга. Однако, вместо обработки прозвища, бот просто рассматривает следующее сообщение как регулярное сообщение и не сохраняет прозвище. хранит его в состоянии FSM. Но когда пользователь отправляет прозвище, бот не обрабатывает его как задумано. Кажется, он рассматривает прозвище как регулярное сообщение вместо его хранения. /> Пользователь отправляет запрос на добавление друга. < /li>
Бот хранит 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("✅ Friend added! Now, please provide their nickname.")

@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"✅ Friend's nickname saved: {message.text}")
else:
await message.answer("❌ Error: target_id is missing!")
< /code>
Ожидаемое поведение: < /p>
После того, как пользователь отправляет запрос в друзья, бот должен попросить прозвище. < /p>
Когда пользователь отправляет псевдоним, бот должен сохранить его как прозвище для добавленного друга. То, что состояние правильно обновляется с помощью target_id, но второе сообщение (прозвище) рассматривается как обычное сообщение, и бот не связывает его с Target_id.
Я попытался добавить дополнительные проверки состояния, но проблема сохраняется. Предполагаемое прозвище для друга.
FSM не является должным образом связывает ник с помощью правильного target_id.
Вопросы:
Почему прозвище не обрабатывается как часть потока FSM? Обычное сообщение?>

Подробнее здесь: https://stackoverflow.com/questions/794 ... fter-addin
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»