Есть рассылка пользователям с кнопками принять/отказаться. Нужно как-то передать данные с id события, чтобы если пользователь нажимает Принять, мы понимали, по какому именно мероприятию он принял и заносили его в нашу БД как участника определенного мероприятия
state.update_data а потом state.get_data и async with state.proxy() as data: data['EVENT_ID'] = event_id - не работаютю В лучшем случае передаётся пустой словарь
Функция рассылки с кнопками, вызываю её как обычную функцию:
@dp.message_handler(IsPrivateMsg())
async def msg_send_all(event_id, state: FSMContext):
text = get_text(event_id)
await state.update_data(EVENT=int(event_id))
# async with state.proxy() as data: # это то, что я уже пробовал
# data['EVENT_ID'] = event_id # это то, что я уже пробовал
users = get_users()
for user_id in users:
try:
await bot.send_message(chat_id=user_id,
text=text,
reply_markup=ikb_users())
await sleep(0.3)
except Exception:
pass
Хендлер, который ловит нажатие на кнопку Подтверждение:
@dp.callback_query_handler(IsPrivateCb(), text='sign_up', state='*')
async def cb_add_confirm(callback: types.CallbackQuery, state: FSMContext):
await callback.message.delete()
try:
a1 = await state.get_data()
a2 = a1.get('EVENT')
print(a2) # в консоли выводит None
except Exception:
pass
add_participant(callback.message.from_user.id, event_id)
await state.finish()