AioGram FSMContext -Problem: Der Spitzname des Benutzers wird nach dem Hinzufügen einer Freundschaftsanfrage nicht korrePython

Python-Programme
Anonymous
 AioGram FSMContext -Problem: Der Spitzname des Benutzers wird nach dem Hinzufügen einer Freundschaftsanfrage nicht korre

Post by Anonymous »

Ich arbeite an einem Telegramm -Bot mit der Aiogrammbibliothek und begegne ein Problem mit der Handhabung der FSM (Finite -Status -Maschine). Das Problem ist, dass ein Benutzer eine Anfrage zum Hinzufügen eines Freundes gesendet hat, er einen Spitznamen für seinen Freund festlegen soll. Anstatt den Spitznamen zu verarbeiten, behandelt der Bot jedoch nur die nächste Nachricht als reguläre Nachricht und speichert den Spitznamen nicht. speichert es im FSM -Zustand. Wenn der Benutzer den Spitznamen sendet, verarbeitet der Bot ihn jedoch nicht wie beabsichtigt. Es scheint den Spitznamen als reguläre Nachricht zu behandeln, anstatt ihn zu speichern. /> Der Benutzer sendet eine Anfrage zum Hinzufügen eines Freundes. Der Benutzer für einen Spitznamen. Br /> Aber das Problem ist, dass der Bot, wenn der Benutzer den Spitznamen [email protected](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>
Erwartete Verhalten: < /p>
Nachdem der Benutzer die Freundschaftsanforderung gesendet hat, sollte der Bot nach einem Spitznamen fragen. < /p>
Wenn der Benutzer den Spitznamen sendet, sollte der Bot ihn als Spitzname für den hinzugefügten Freund speichern. Dass der Zustand mit target_id korrekt aktualisiert wird, aber die zweite Nachricht (der Spitzname) wird als reguläre Nachricht behandelt, und der Bot assoziiert ihn nicht mit dem target_id.
Ich habe versucht, zusätzliche Statusprüfungen hinzuzufügen, aber das Problem besteht Der beabsichtigte Spitzname für den Freund. /> Warum wird der Spitzname nicht als Teil des FSM -Flusses verarbeitet? < /p>
Wie kann ich sicherstellen Regelmäßige Nachricht?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post