Рассылка и приём сообщений от нескольким пользователей в 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-клавиатуру с кнопкой, после нажатия кнопки ставится стейт. Так как в прошлом решении ставился только один стейт, в новом же такой проблемы нет. Всем спасибо