当前位置: 首页 > 知识库问答 >
问题:

discord.ext.commands.errors.命令未找到

燕刚捷
2023-03-14

我的discord bot能够运行其on_消息代码,但当我尝试运行命令%ping时,它会出错并显示“discord.ext.commands.errors.CommandNotFound:未找到命令”ping“。

我已经导入了所有需要的模块,在底部写了client.run(令牌),并定义了我的令牌和客户端对象,我认为没有必要包含这些代码行。

我已经包括等待client.process_commands(消息)和移动代码,我不知道该怎么办。

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))
    if online:
        await client.change_presence(activity=discord.Game(name="Command prefix: " + compref))
    else:
        await client.change_presence(status=discord.Status("offline"))


@client.event
async def on_message(message):
    #print(message.author)
    #print(client.user)
    if message.author == client.user:
        await client.process_commands(message)
        return
    else:
        #print(message.channel.name)
        try:
            # Create target Directory
            os.mkdir(str(message.author.guild.name))
            #print("Guild msg Directory Created ")
        except FileExistsError:pass
            #print("Guild msg Directory already exists")
        try:
            os.mkdir(str(message.author.guild.name) + "\\message_logs")
        except FileExistsError:pass
            #print("Guild msg Directory already exists")
        with open(str(message.author.guild.name) + "\\message_logs\\" + str(message.channel.name) + "_message_log.json", "a") as c:
            ec = (time.asctime(time.localtime(time.time())) + "; " + str(message.author.name) + ": " + message.content).encode("utf-8")
            #print(ec)
            c.write(str(ec))
            c.write("\n")
            c.close()
    await client.process_commands(message)



@client.command
async def ping(ctx):
    await ctx.send(f"pong {round(client.latency * 1000)}ms")
    server = ctx.message.author.guild
    server_name = server.name
    server_id = server.id
    server_owner = server.owner.name
    print("")
    print("hi")
    print("server name: {}\n"
          "server id: {}\n"
          "server owner: {}"
          .format(server_name, server_id, server_owner))
    print("")
    try:
        # Create target Directory
        os.mkdir(str(server.name))
        print("Guild Directory ", str(server.name),  " Created ") 
    except FileExistsError:pass
        #print("Guild Directory ", str(server.name),  " already exists")

    with open(str(server.name) + "\\" + str(server.name) + "_info.json", "w") as s:
        e = "Server name: " + server.name + "\n" + "Server ID: " + str(server_id) + "\n" + "Server Owner: " + server_owner
        #print(e)
        s.write(e)
        s.close()

    await client.process_commands(message)

共有1个答案

高溪叠
2023-03-14

Bot.command是返回装饰器的函数,而不是装饰器本身。你需要称之为:

@client.command()
async def ping(ctx):
    await ctx.send(f"pong {round(client.latency * 1000)}ms")
    server = ctx.message.author.guild
    server_name = server.name
    server_id = server.id
    server_owner = server.owner.name
    print("")
    print("hi")
    print("server name: {}\n"
          "server id: {}\n"
          "server owner: {}"
          .format(server_name, server_id, server_owner))
    print("")
    try:
        # Create target Directory
        os.mkdir(str(server.name))
        print("Guild Directory ", str(server.name),  " Created ") 
    except FileExistsError:pass
        #print("Guild Directory ", str(server.name),  " already exists")

    with open(str(server.name) + "\\" + str(server.name) + "_info.json", "w") as s:
        e = "Server name: " + server.name + "\n" + "Server ID: " + str(server_id) + "\n" + "Server Owner: " + server_owner
        #print(e)
        s.write(e)
        s.close()
    # Remove the process_commands, we're already in a command
 类似资料:
  • 所以我尝试使用python为我的不和谐机器人做这个简单的投票函数: 问题是,当我试图调用函数时,它会给我一个错误。错误:忽略命令无中的异常:discord.ext.commands.errors.命令没有找到:命令“makePoll”没有找到。 编辑:试图命名client.commandmakePoll,但知道它给我这个错误:忽略命令makePoll中的异常:Traceback(最近一次调用最后一

  • 我是新的Python开发和尝试使用pipenv。我运行命令,它成功运行: 然而,当我在一个新的根项目目录中运行命令时,我收到以下消息:。我怀疑我可能需要修改我的. bashrc,但是我不清楚要向文件中添加什么,或者是否需要修改。

  • 我在Heroku上使用Postgresql数据库托管了一个RoR应用程序,并且一直在使用PG备份工具将数据库从我的应用程序备份到本地机器上。由于该应用程序仍在开发中,它从编程的角度帮助我降低了我的同事对数据库所做的更改。几个月来,我一直在成功地使用PG备份进行捕获和恢复,但最近,当我运行此处所示的典型命令时: 在curl命令执行后,我遇到此错误: 你知道为什么会这样吗?显然,问题是我无法恢复下载的

  • 我使用的是节点0.10。35和grunt指挥部运作良好。现在升级到0.12之后。3 grunt命令已停止工作。 OS:Mac OSX 10.10.1节点:0.12.3 npm:2.9.1 grunt:0.4.5 我认为可能有问题的节点安装所以我清理安装了3-4次 我试着用- node-v0.12.3.pkg 节点版本管理器(nvm) 许多此类问题的解决方案建议使用 然后使用安装本地节点模块。 我遵

  • 我试着做一个文件: 但是得到了错误: Android:命令未找到 我试图设置Android SDK的路径,但没有帮助: 有没有可能解决这个问题? UPD:我正在使用这个软件中的Git Shell:http://git-scm.com/download/win

  • 我正在学习laravel并遵循这个教程, 但当我尝试安装npm时,它说