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

为什么我会收到错误“该命令已经是一个现有的命令或别名”,而它不应该是?

阳航
2023-03-14

我只是试着制作Discord机器人,我试着把这个命令放到一个类别中,但是,不管我怎么称呼这个命令,这个错误都会出现。这是我的密码:

import discord,random
from discord.ext import commands 

bot = commands.Bot(command_prefix=';')

@bot.event
async def on_ready():
    print("bot is ready for stuff")
    await bot.change_presence(activity=discord.Game(name=";help"))

class general_stuff(commands.Cog):
    """Stuff that's not important to the bot per say"""

    @bot.command()
    async def lkibashfjiabfiapbfaipb(self, message):
        await message.send("test received.")

bot.add_cog(general_stuff())
bot.run("TOKEN")

这是我得到的错误:

The command lkibashfjiabfiapbfaipb is already an existing command or alias.

无论我对命令做了多少更改,它都会不断给出相同的错误。

共有1个答案

陆飞龙
2023-03-14

你走在正确的轨道上。你得到错误的原因是当你启动程序时,它从顶部读取并向下工作;

class general_stuff(commands.Cog):
    """Stuff that's not important to the bot per se"""

    @bot.command() # Command is already registered here
    async def lkibashfjiabfiapbf(self, message):
        await message.send("test received.")

bot.add_cog(general_stuff()) 
# It tries to load the class general_stuff, but gets the error because
# it's trying to load the same command as it loaded before

@bot。命令将方法添加到bot并加载它。使用Cogs,您可以使用@命令进行操作。command()。它只将方法转换为命令,但不将其加载。

您的代码应该如下所示

...
class general_stuff(commands.Cog):
    """Stuff that's not important to the bot per se"""

    @commands.command()
    async def lkibashfjiabfiapbf(self, message):
        await message.send("test received.")
...

参考资料:

  • @机器人。命令
 类似资料:
  • 我有这个代码的麻烦(抱歉,它的巨大): 不要说令牌不在那里,我知道它不在那里。 但是我得到了这个错误信息: 回溯(最后一次调用):文件“main.py”,第137行,异步定义on_消息(消息,成员:discord.member,*,角色:discord.role):文件“/opt/virtualenvs/python3/lib/python3.8/site packages/discord/ext

  • 我正在用python开发一个discord bot,但只要我运行代码,它就会显示一个错误

  • 这是我的机器人的完整代码,只是想告诉你,除了help命令之外,我没有在任何地方使用过help。这太令人困惑了,哈哈。 问题是这些行,它说帮助已经定义,但它不是?当我使用清除命令而不是清除命令时,我也遇到了同样的问题。它只是不停地说这个命令已经被使用了。这让我很困惑,哈哈。 以下是错误代码:

  • python似乎支持许多不同的命令来停止脚本执行。 我找到的选择有:、、、 我错过了什么吗?它们之间有什么区别?你什么时候用?

  • 问题内容: 我正在尝试运行以下内容。 如果我删除以下行: 至.... 一切都会正常。如果没有,我得到以下错误: 命令不同步; 您现在不能运行此命令 在研究,我认为这可能是由于多个库MySQLi查询同时运行,其中使用但在所有样品和通用数据导向似乎并不适用。 有任何想法吗? 问题答案: MySQL客户端不允许您执行新的查询,在该查询中仍需要从正在进行的查询中获取行。有关常见错误,请参见MySQL文档中

  • 问题内容: 从log.go(执行日志包): 只是一个函数包装器,为什么我应该用它代替or ? 有实际原因吗? 问题答案: 两件事不同: 通过包日志进行打印对于并发goroutine是安全的(而普通的则不是) 日志可以自动添加计时信息。 因此,这是两件完全不同的事情。log用于记录和格式化。(好吧,log使用相同的动词和标志,但这很方便)。