@Corn385

Как передать значение переменной в другую функцию?

Есть такая машина состояния. В нее приходит значение, которое хранится в переменной "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('Введите количество игр, которое вы сыграли:')
    moon = message.text

async def load_win(message : types.Message, state: FSMContext, moon):
    async with state.proxy() as data: 
        data['names'] = moon
        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 message.answer("Данные успешно внесены!")
    await state.finish()

т.е. я перенес значение переменной message в переменную moon. И это значение moon, мне нужно перенести в другую функцию, в которой это значение должно перейти во временную бд машины состояния. Но на выходе мне выдает:
TypeError: load_win() missing 1 required positional argument: 'moon'
Как правильно перенести значение moon в следующую функцию?
  • Вопрос задан
  • 324 просмотра
Решения вопроса 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Вам надо одно из двух: либо вернуть значение из первой функции через return и затем использовать его, передав в другую функцию как параметр той функции, либо внутри первой функции поменять объект вне функции (файл, БД, глобальную переменную).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Почему ты в функции cm_start не запишешь в словарь FSM?, ты же там установил состояние, так и запиши там же!)

async def cm_start(message : types.Message, state: FSMContext):
    await FSMAdmin.all_game.set()

    await message.answer('Введите количество игр, которое вы сыграли:')

    async with state.proxy() as data: 
        data['names'] = message.text
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы