#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
функция будет рекурсивной при вызове и выдаст ошибку.