aiogram как работать с пользователями по очереди?

Я использую библиотеку aiogram, чтобы написать телеграм бота казино. Возникла проблема: Если два игрока одновременно играют, то есть запускают функцию game, то может произойти такое, что один пользователь вторгнется в игру другого, и данные одного пользователя запишутся другому(кол-во игровой валюты, статистика, и т. д.). Вопрос: Почему так происходит? И можно ли как-то сделать так, чтобы каждый пользователь стоял в очереди на выполнение этой функции? Или же можно как-то по-другому решить эту проблему?

@dp.message_handler(state = GameChoose.Q2)
async def game(message: types.Message, state: FSMContext):
    global money, stats, currency
    userid = message.from_user.id
    money, stats[0], stats[1], currency = load(userid)
    msg = message.text
    data = await state.get_data()
    gametype = data.get('gametype')
    if msg == '/leave':
        await message.reply('Ты вышел из игры.')
        await state.finish()
    elif gametype == 'classic':
        try: 
            if money >= int(msg.split()[0]) and (int(msg.split()[1]) >= 2 and int(msg.split()[1]) <= 20):
                money -= int(msg.split()[0])
                result = await play(userid, int(msg.split()[0]), int(msg.split()[1]))
                money += result[0]
                save(userid, money, stats[0], stats[1], currency)
                await message.reply(result[1] + f'Твой баланс: {money} {currency}.')
                exchg_rate_chg()
            else:
                await message.reply(f'''Недостаточно {currency} или недопустимая ставка
Для помощи введи !help или /help.''')

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