В библиотеке Aiogram для работы с состояниями используется система состояния (Finite State Machine, FSM). Чтобы назначить состояние конкретному пользователю, вам нужно получить доступ к контексту состояний и использовать `set_state` для пользователя, который должен иметь новое состояние.
Ваша функция `like` будет выглядеть примерно так:
```python
from aiogram import Bot
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher import Dispatcher
# Здесь должен быть ваш бот и диспетчер
bot = Bot(token='YOUR_BOT_TOKEN')
dp = Dispatcher(bot)
async def like(tg_id_1: int, tg_id_2: int, state: FSMContext) -> None:
"""
:param tg_id_1: Поставивший лайк
:param tg_id_2: Лайкнутый
:param state: FSMContext
"""
await bot.send_message(
tg_id_2,
'Кому-то понравилась твоя анкета! Заканчивай с вопросом выше и посмотрим кто это'
)
# Устанавливаем состояние для tg_id_2
await state.storage.set_state(user=tg_id_2, state='your_desired_state')
# Вы можете продолжать работу с пользователем tg_id_1
```
Основные моменты, которые нужно учесть:
1. Помните, что `FSMContext`, который вы получаете в хэндлерах, связан с конкретным пользователем. Чтобы установить состояние для другого пользователя, нужно будет использовать методы `set_state` напрямую из хранения состояний.
2. Убедитесь, что вы правильно определили состояния в вашем проекте. Вам нужно описать класс состояния, который будет использоваться:
```python
from aiogram.dispatcher import FSMContext, State, StatesGroup
class MyStates(StatesGroup):
waiting_for_answer = State()
# Другие состояния...
```
3. Поскольку вы хотите устанавливать состояние для пользователя, который не является текущим пользователем (в данном примере `tg_id_2`), необходимо удостовериться, что состояние для него существует в хранилище состояний (например, Redis или MemoryStorage).
Если вы используете хранилище состояний, которое поддерживает несколько пользователей (что является, по сути, стандартным), это будет работать правильно.
Для более сложных случаев, когда вы хотите сохранять данные промежуточного состояния, вы также можете использовать `state.update_data()` для хранения и получения данных для конкретных пользователей.