Ошибка экономики в discord.py
Мой код не работает, и выдаёт такую ошибку:
Traceback (most recent call last):
File "/home/alex/.local/lib/python3.10/site-packages/discord/ext/commands/core.py", line 190, in wrapped
ret = await coro(*args, **kwargs)
File "/home/alex/Desktop/Storage/TESTbot/main.py", line 59, in баланс
await open_account(ctx.author)
File "/home/alex/Desktop/Storage/TESTbot/main.py", line 119, in open_account
users = await get_bank_data()
File "/home/alex/Desktop/Storage/TESTbot/main.py", line 141, in get_bank_data
users = await get_bank_data()
File "/home/alex/Desktop/Storage/TESTbot/main.py", line 141, in get_bank_data
users = await get_bank_data()
File "/home/alex/Desktop/Storage/TESTbot/main.py", line 141, in get_bank_data
users = await get_bank_data()
[Previous line repeated 980 more times]
RecursionError: maximum recursion depth exceeded
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/alex/.local/lib/python3.10/site-packages/discord/ext/commands/bot.py", line 1347, in invoke
await ctx.command.invoke(ctx)
File "/home/alex/.local/lib/python3.10/site-packages/discord/ext/commands/core.py", line 986, in invoke
await injected(*ctx.args, **ctx.kwargs) # type: ignore
File "/home/alex/.local/lib/python3.10/site-packages/discord/ext/commands/core.py", line 199, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: RecursionError: maximum recursion depth exceeded
Если что я использую bot а не client. Мой код:
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix='-', intents=intents) #Префикс
#Начало
@bot.event
async def on_ready():
print('Запущен бот: {0.user}'.format(bot))
await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.watching, name='За ' + str(len(bot.guilds)) + ' серверами'))
show("Бот запущенн!")
# Экономика
os.chdir("/home/alex/Desktop/Storage/TESTbot")
@commands.command()
async def баланс(ctx):
await open_account(ctx.author)
user = ctx.author
users = await get_bank_data()
red_gems = users[str(user.id)]["Красные кристаллы"]
purple_gems = users[str(user.id)]["Фиолетовые кристаллы"]
blue_gems = users[str(user.id)]["Голубые кристаллы"]
orange_gems = users[str(user.id)]["Оранжевые кристаллы"]
green_gems = users[str(user.id)]["Зелёные кристаллы"]
coins = users[str(user.id)]["Монеты"]
embedVar = discord.Embed(title=f"***Балланс пользователя {ctx.author.name}***", color=clr)
embedVar.add_field(name="**Крассные кристаллы:**", value=red_gems)
embedVar.add_field(name="**Фиолетовые кристаллы:**", value=purple_gems)
embedVar.add_field(name="**Голубые кристаллы:**", value=blue_gems)
embedVar.add_field(name="**Оранжевые кристаллы:**", value=orange_gems)
embedVar.add_field(name="**Зелёные кристаллы:**", value=green_gems)
embedVar.add_field(name="**Монеты:**", value=coins)
await ctx.send(embed=embedVar)
bot.add_command(баланс)
@commands.command()
async def копать(ctx):
await open_account(ctx.author)
user = ctx.author
users = await get_bank_data()
users[str(user.id)]["Оранжевые кристаллы"]
users[str(user.id)]["Зелёные кристаллы"]
ranomminingorange = random.randrange(12)
ranommininggreen = random.randrange(112)
embedVar = discord.Embed(title="***Оповещение***", description="Вы выкопали:", color=clr)
embedVar.add_field(name="**Зелёные кристаллы:**", value=ranommininggreen)
embedVar.add_field(name="**Оранжевые кристаллы:**", value=ranomminingorange)
await ctx.send(f"После усердного копания вы выкопали:")
users[str(user.id)]["Оранжевые кристаллы"] += ranomminingorange
users[str(user.id)]["Зелёные кристаллы"] += ranommininggreen
with open("mainbank.json", "w") as f:
json.dump(users,f)
bot.add_command(копать)
async def open_account(user):
#user = ctx.author
users = await get_bank_data()
if str(user.id) in users:
embedVar = discord.Embed(title="**Ошибка**", description="Вы уже зарегестрированны в системе экономики Ини Мини.", color=clr)
await ctx.send(embed=embedVar)
else:
users[str(user.id)]["Пользователь"] = {}
users[str(user.id)]["Красные кристаллы"] = 0
users[str(user.id)]["Фиолетовые кристаллы"] = 0
users[str(user.id)]["Голубые кристаллы"] = 10
users[str(user.id)]["Оранжевые кристаллы"] = 0
users[str(user.id)]["Зелёные кристаллы"] = 0
users[str(user.id)]["Монеты"] = 100
with open("mainbank.json", "w") as f:
json.dump(users,f)
return True
async def get_bank_data():
users = await get_bank_data()
with open("mainbank.json", "r") as f:
json.dump(users,f)