ImportError: cannot import name 'amount_out_gold' from 'core.handlers.selectamount'
Сначала у меня была проблема что переменная не перезаписывалась и вот да, потом я сделал ее глобальной и у меня теперь импорт ерор.
А мне всего лишь нужно из core\handlers\selectamount.py передать amount в core\handlers\callback.py
core\handlers\callback.py
from aiogram import Bot
from aiogram.types import Message, CallbackQuery
from core.utils.callbackdata import WeapInfo
from core.handlers.selectamount import amount_out_gold
print("call ", amount_out_gold)
async def choice_weapon(callback: CallbackQuery, callback_data: WeapInfo):
print("call ", amount_out_gold)
stattrack = callback_data.stattrack
name = callback_data.name
skin = callback_data.skin
if stattrack:
print("call 1 ", amount_out_gold)
answer = f'Хорошо выставляйте {stattrack} {name} {skin} за {amount_out_gold}'
await callback.message.edit_text(answer)
elif stattrack == None or stattrack == "None":
print("call 2 ", amount_out_gold)
answer = f'Хорошо выставляйте {name} {skin} за {amount_out_gold}'
await callback.message.edit_text(answer)
core\handlers\selectamount.py
from aiogram import Bot
from aiogram.types import Message, CallbackQuery
from aiogram.fsm.context import FSMContext
from core.utils.shopstates import SelectAmount
from core.utils.dbconnect import Request
from core.keydoard import inlineweapon as inweapon
from dotenv import load_dotenv
import os
load_dotenv()
ADMIN_ID = os.getenv("ADMIN_ID")
async def out_gold_weapon(message: Message, state: FSMContext, request: Request, bot: Bot):
global amount_out_gold
await state.update_data(amount=message.text)
amount = await state.get_data()
amount = amount['amount']
amount = int(amount)
amount_out_gold = amount
await message.answer(f'Выберите оружие для вывода! Вы хотите вывести {message.text} голды\n{amount}',
reply_markup=inweapon.get_inline_keyboard())
print("amount ", amount)
print("amount_out_gold ", amount_out_gold)
await state.clear()
print(amount)
print(amount_out_gold)
Ответы (1 шт):
У вас переменная amount_out_gold определена только в теле функции
async def out_gold_weapon(message: Message, state: FSMContext, request: Request, bot: Bot):
global amount_out_gold
значит, что import его не видит.
Из документации:
Имена, перечисленные в операторе global, не должны определяться как формальные параметры или в цели управления циклом for, определении class, определении функции, операторе import или аннотации переменных.
Вы должны определить то же самое имя еще и на глобальном уровне, например так:
amount_out_gold = 0
async def out_gold_weapon(message: Message, state: FSMContext, request: Request, bot: Bot):
global amount_out_gold
Теперь импорт этой переменной осуществится, но зачем вам это будет, я не понимаю...