好的,所以在切换到另一个虚拟机提供商之前,我有一个音乐机器人代码正在运行。所有要求与我以前的虚拟机完全相同,因为我复制并粘贴了包括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:不知道为什么无法回滚重写版本。也许我做得不好。
答案 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帮我解决这个问题。