discord.ext.commands.errors.CommandNotFound:找不到命令“平衡”

时间:2021-05-12 14:52:06

标签: python discord discord.py

我正在构建一个机器人,允许用户向机器人发送命令以获取游戏内货币。我已经为这个项目安装了所有必需的模块,它能够在命令提示符中运行它的启动消息。

但是,我遇到了一个问题,即在 Discord 服务器中调用时,机器人不响应我的命令。这是 cmd 提示符中显示的 Error Message。我已经查找过类似的问题,但它没有帮助我解决这个问题。

我对如何进一步改进我的代码持开放态度,因为我对 Python 还是个新手。

import discord
from discord.ext import commands
import json
import os
import random

os.chdir("D:\\Work\\Programming\\Sublime Text\\Projects")

client = discord.Client()
client = commands.Bot(command_prefix = "bot!")

##Event portion
@client.event
async def on_ready():
    print("Hello, the bot is ready.")


@client.command()   ##Account opening
async def open_account(user):
    users = await get_bank_data()
    with open("bank.json","r") as f:
        users = json.load(users,f)

    if str(user.id) in users:
        return false
    else:
        users[str(user.id)] = {}
        users[str(user.id)]["Wallet"] = 150
    with open("bank.json","w") as f:
        json.dump(users,f)
    return True

async def get_bank_data():##Bank data
    with open("bank.json","r") as f:
        users = json.load(f)
    return users

async def balance(ctx):##Balance portion
    await open_account(ctx,author) ##Open an account if it is not an existing user
    user = ctx.author
    users = await get_bank_data()
    wallet_amt = users[str(user.id)]["Wallet"]

async def earn(ctx):##Earning portion
    await open_account(ctx,author)
    user = ctx.author
    users = await get_bank_data()
    earnings = randomrange(1000)
    wallet_amt = users[str(user.id)]["Wallet"]

    await ctx.send(f"You made {earnings} dollars")

    users[str(user.id)]["Wallet"] += earnings
    with open("bank.json","w") as f:
        json.dump(users,f)

    ##Embeded portion
    em= discord.Embed(title =f"{ctx.author.name}'s balance", color =discord.Color.red())
    em.add_field(name = "Wallet", value = wallet_amt)
    await ctx.send(emded = em)

client.run('TOKEN')

2 个答案:

答案 0 :(得分:0)

在做 @client.command 之前总是要加上 async def,否则它不会将其识别为命令。

答案 1 :(得分:0)

有两种类型的函数可以使它变得简单。

async def 当您想使用 await

def 如果没有 await

你的命令必须是异步函数,它看起来像这样

@client.command
async def test(ctx):
    #code

在您的情况下,您在 @client.command balance 和 myabe 中缺少 earn