更改虚拟机后找不到命令错误

时间:2019-03-29 17:08:51

标签: discord.py discord.py-rewrite

好的,所以在切换到另一个虚拟机提供商之前,我有一个音乐机器人代码正在运行。所有要求与我以前的虚拟机完全相同,因为我复制并粘贴了包括requirements.txt在内的所有内容。在我尝试运行任何命令之前,该机器人均正常运行,但出现0个错误。它给了我这个错误:

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

我尝试回滚到开始该项目的重写版本, 在分配@client.command后将@bot.command更改为bot = commands.Bot(command_prefix='prefix')

#I've assigned client = discord.ext.commands
@client.command(name='play', aliases=['sing'])
async def play(self, ctx, *, search: str):
    #then some code

更新1:以齿轮的形式运行并提高:

discord.ext.commands.errors.ExtensionFailed: Extension 'music' raised an error: TypeError: cogs must derive from Cog

更新2:不知道为什么无法回滚重写版本。也许我做得不好。

2 个答案:

答案 0 :(得分:0)

只需将其作为齿轮运行即可。

请注意,嵌齿轮的工作方式最近已更新:

https://discordpy.readthedocs.io/en/rewrite/ext/commands/cogs.html

如果您仍然想将其作为独立的bot运行, 您的漫游器应类似于:

from discord.ext.commands import Bot

bot = Bot("!")

@bot.command(name='play', aliases=['sing'])
async def play(ctx, *, search: str):  # Note no self
    #then some code

bot.run("token")

运行的机器人与向其注册命令的机器人相同,这一点很重要。即使机器人中没有齿轮,您也会将self传递给您的机器人,这是没有道理的。

答案 1 :(得分:0)

好的,所以我找到了问题。 当我尝试将其作为独立的bot运行时,该bot无法正常工作。 第一次将其用作齿轮的原因是因为。 在discord.py rewrite中更改了齿轮的工作方式。 这些是我所做的更改:

#in cogs/music.py
class Music:
    #Code

@bot.event
async def on_ready():
    print('Music bot online')

#in cogs/music.py
class Music(commands.Cog):
    #Code

@commands.Cog.listener()
async def on_ready():
    print('Music bot online')

感谢传奇的@PatrickHaugh帮我解决这个问题。