discord.ext.commands.errors.CommandNotFound: ошибка команды «баланс» не найдена, хотя она есть

#discord #discord.py

#Discord #discord.py

Вопрос:

Я пытаюсь сделать discord.py бот с системой экономии, это базовый скрипт, который показывает баланс.

 client.command()
async def balance(ctx):
    global user

    await open(ctx.author)
    users = await get()

    wallet_data = users[str(user.id)]["wallet"]
    bank_data = users[str(user.id)]["bank"]

    details = discord.Embed(title=f"{ctx.author.name}'s balance now", color=discord.Color.red())
    details.add_field(name="W A L L E T", value=wallet_data)
    details.add_field(name="B A N K", value=bank_data)

    await ctx.send(embed=details)


async def open(user):
    global users

    users = await get()
    
    with open(r"C:discbotbank.json", "r") as data:
        users = json.load(data)
    
    if str(user.id) in users:
        return False
    
    else: 
        users[str(user.id)]["wallet"]=0
        users[str(user.id)]["bank"]=0
    
        with open(r"C:discbotbank.json", "w") as data:
            json.dump(users,data)
    
        return True


async def get():
    with open(r"C:discbotbank.json", "r") as data:
        users = json.load(data)

    return users


client.run(ID)
 

Однако она возвращается с

 discord.ext.commands.errors.CommandNotFound: Command "balance" is not found
 

Несмотря на то, что баланс определяется при его запуске.

Комментарии:

1. Можете ли вы поставить @ в начало client.command() ?

Ответ №1:

Вам нужно позвонить @client.command() до того, как вы async def ... зарегистрируете ее как команду.

 @client.command()
async def foo(ctx):
    await ctx.send("bar")
 

Кроме того, вы переопределяете open. Таким образом, ваша async def open функция будет рекурсивной при вызове и выдаст ошибку.