Рассылка и приём сообщений от нескольким пользователей в aiogram

У меня есть код, который отправляет некоторому списку id-ов сообщение и ставит state, мол ожидает ссылку:

async def async_ids_generator(ids):
    for cid in ids:
        yield cid

async for cid in async_ids_generator(ids):
    if not offer.build:
        await state.update_data(chat_ids=cid, offer_id=int(offer_id))
        await state.set_state(st.GetLink.get_link)
        await query.bot.send_message(text="Пришлите ссылку", chat_id=cid)

Код функции обработки отправленной ссылки:

@router_contractor.message(st.GetLink.get_link)
async def get_creator_link(message: Message, state: FSMContext):
    data = await state.get_data()
    if message.from_user.id == data['chat_id']:
        offer = await rq.find_offer_by_id(data['offer_id'])
        links = offer.main_links
        for i in range(offer.count_creators):
            if message.from_user.id == getattr(offer, f"list_creators{i+1}")[0]:
                links[i] = message.text

        await rq.edit_offer(offer.id, updates={"main_links": links})
        await state.clear()
        await message.answer("Вы успешно приняты!", reply_markup=kb.contractor.main)

Проблема в том, что оно обрабатывает сообщение только от одного пользователя и всё, я так понимаю, ошибка в том, что цикл ставит только один стейт и всё? Как это исправить?


Ответы (1 шт):

Автор решения: Артем Крылов

В общем, решил просто отправлять inline-клавиатуру с кнопкой, после нажатия кнопки ставится стейт. Так как в прошлом решении ставился только один стейт, в новом же такой проблемы нет. Всем спасибо

→ Ссылка