ImportError: cannot import name 'db' from partially initialized module 'db_gino' (most likely due to a circular import) (D:\python\db_gino.py)
from aiogram.utils import executor
from aiogram import Bot, Dispatcher, types
import random
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher import FSMContext
import asyncio
import os
from dotenv import load_dotenv
import quick_commands
from db_gino import db
load_dotenv()
TOKEN = "5565651631:AAE3eeblp24pDy0t-6Kea6HQ2CwJtrYj2io"
async def on_startup(_):
print('Bot online...')
proxy_url = "http://proxy.server:3128"
bot = Bot(token=TOKEN) # , proxy=proxy_url)
dp = Dispatcher(bot, storage=MemoryStorage())
ip = os.getenv('ip')
PGUSER = str(os.getenv('PGUSER'))
PGPASSWORD = str(os.getenv('PGPASSWORD'))
DATABASE = str(os.getenv('DATABASE'))
POSTGRES_URI = f'postgresql://{PGUSER}:{PGPASSWORD}@{ip}/{DATABASE}'
tms = 10
tms1 = 1
timer_seconds = int(0)
import user
@dp.message_handler(commands='reg')
async def registersql(message: types.Message):
try:
user = await quick_commands.select_user(message.from_user.id)
if user.status == 'active':
await message.answer(f"Привет! {user.first_name}\n"
f"Ты уже зарегистрирован!")
elif user.status == 'baned':
await message.answer("Ты в бане")
except Exception:
await quick_commands.add_user(user_id=message.from_user.id,
first_name=message.from_user.first_name,
last_name=message.from_user.last_name,
username=message.from_user.username,
status='active')
await message.answer('Ты зарегистрирован!')
@dp.message_handler(commands='ban')
async def ban(message: types.Message):
await quick_commands.update_status('baned')
await message.answer("Вас заблокировали!")
@dp.message_handler(commands='ban')
async def ban(message: types.Message):
await quick_commands.update_status('active')
await message.answer("Вас разблокировали!")
async def new_timer_message(message):
global timer_seconds
try:
timer_seconds
except (TypeError, ValueError):
pass
new_message = await bot.send_message(message.chat.id, f"До следущего получения бонуса: {timer_seconds} минут")
for seconds_left in range(timer_seconds - 1, -1, -1):
await asyncio.sleep(60)
await new_message.edit_text(f"До следущего получения бонуса: {seconds_left} минут")
timer_seconds -= tms1
class Form(StatesGroup):
Amount = State()
#async def bonus(user_id: int, amountt=5000):
# user = await quick_commands.select_user(user_id=user_id)
# new_balance = user.balance + amountt
# await user.update(balance=new_balance).apply()
balance = 5000
@dp.message_handler(commands="bonus")
async def command_bonus(message: types.Message):
global timer_seconds, tms
if timer_seconds == 0:
await bot.send_message(message.chat.id, "+5000")
timer_seconds += tms
await new_timer_message(message)
@dp.message_handler(commands="balance")
async def command_all(message: types.Message):
#user = await quick_commands.select_user(user_id=)
await message.reply(f"Баланс = {user.balance}")
@dp.message_handler(commands='playy')
async def cmd_start(message: types.Message):
await Form.Amount.set()
await message.reply("Сделайте ставку")
@dp.message_handler(lambda message: not message.text.isdigit(), state=Form.Amount)
async def process_amount_invalid(message: types.Message):
await message.reply("Сделай ставку цифрами!")
@dp.message_handler(state=Form.Amount)
async def process_name(message: types.Message, state: FSMContext):
async with state.proxy() as data:
global balance
data['Amount'] = message.text
ran = random.randint(0, 1)
if balance > int(data['Amount']):
if int(str(data['Amount'])) > 0:
if ran != 1:
await message.reply("Вы проиграли -" + str(data['Amount']))
balance -= int(str(data['Amount']))
else:
await message.reply("Вы выиграли! +" + str(data['Amount']))
balance += int(str(data['Amount']))
else:
await message.reply("Отрицательная ставка?")
else:
await message.reply("Недостаточно средств")
await state.finish()
async def on_startup(dp):
import filters
filters.setup(dp)
from db_gino import on_startup
print("Подключение к базе данных")
await on_startup(dp)
print("Удаление старых таблиц")
await db.gino.drop_all()
print("Создание таблиц")
await db.gino.create_all()
print("Успешно!")
if __name__ == "__main__":
executor.start_polling(dp, on_startup=on_startup)
ошибка
Traceback (most recent call last):
File "D:\python\balance.py", line 10, in <module>
import quick_commands
File "D:\python\quick_commands.py", line 3, in <module>
from db_gino import db
File "D:\python\db_gino.py", line 7, in <module>
import balance
File "D:\python\balance.py", line 11, in <module>
from db_gino import db
ImportError: cannot import name 'db' from partially initialized module 'db_gino' (most likely due to a circular import) (D:\python\db_gino.py)