为什么我会收到一个 TypeError,上面写着:缺少 1 个必需的位置参数:'message'

Why do I get a TypeError that says: missing 1 required positional argument: 'message'

如果我运行这个代码:

    @commands.Cog.listener()
async def on_message(self, ctx, message):
    if message.content.startswith('/test'):
        ctx.send("Test")

我收到这个错误:

TypeError: on_message() missing 1 required positional argument: 'message'

我该如何解决?

正如文档中所写,on_message 只需要 1 个参数:message。由于您的听众似乎在 class 中,因此它只需要 selfmessage

如果您从参数中删除 ctx,它应该可以工作。显然 ctx.send 将不起作用,您可以使用 message.channel.send 作为替代。还要确保使用 await 发送消息。

@commands.Cog.listener()
async def on_message(self, message):
    if message.content.startswith('/test'):
        await message.channel.send("Test")

https://discordpy.readthedocs.io/en/master/api.html?highlight=on_message#discord.on_message