Как передать в машину состояния данные aiogram?

Имеется данная функция:

async def nbv(message):
  for hus in cur.execute(f'SELECT name FROM cathlete WHERE id = ?', (message.from_user.id,)).fetchall():
    if message.text == hus[0]:
      await other.cm_start(message)

Суть заключается в том, что по введенному слову в чат тг, она проверяет наличие такого же слова в бд. Если такое слово находится то она перенаправляет к другой функции, которая активирует машину состояния:

class FSMAdmin(StatesGroup):
  names = State()
  id_tg = State()
  all_game = State()
  winners = State()

async def cm_start(message : types.Message):
  await FSMAdmin.all_game.set()
  await message.answer('Введите количество игр, которое вы сыграли:')
  async with state.proxy() as data:
    data['names'] = message.text #тут должно передаться слово, которое мы получили из прошлой функции

async def load_win(message : types.Message, state: FSMContext):
  async with state.proxy() as data: 
    data['id_tg'] = message.from_user.id
    data['all_game'] = message.text
  await FSMAdmin.next()
  await message.answer('Введите количество побед:')

async def load_lose(message : types.Message, state: FSMContext):
  async with state.proxy() as data:
    data['winners'] = message.text
  async with state.proxy() as data:
    await message.answer(str(data))
  await state.finish()

суть в том, что выводит: FSMContextProxy state = 'FSMAdmin:winners', data = {'id_tg': 1031222801, 'all_game': '10', 'winners': '6'} Но почему то не добавляется в этот перечень "names" Пробовал по разному, но никак не получается передать слово из первой функции в значение переменно names


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

Автор решения: Артем Заранков

В данном случае нужен хэндлер для нулевого сообщения, то есть нужно сначала задать команду с вопросом про игры, потом изменить состояние, добавив ещё одно в список, после этого message.text сохранить как переменную, которую уже можно передать в data, и потом нужно переходить к следующему состоянию

→ Ссылка