命令引发异常:AttributeError:'str'对象没有属性'message'

时间:2020-08-25 06:33:03

标签: python discord discord.py

Command raised an exception: AttributeError: 'str' object has no attribute 'message'

我收到错误消息:

add_reaction

执行代码时出现以下错误。

它是在我输入这些代码之前执行的。

最后,{{1}}功能将无法正常运行。

如何解决该错误?

1 个答案:

答案 0 :(得分:3)

您的代码中存在多个错误:

  • ctx必须是任何命令的第一个参数。在您的情况下,您期望的discord.Context对象将是reaction,这就是您遇到此错误的原因。您的函数定义应为:
    @bot.command()
    async def vote(ctx, reaction):
    
  • 在您提供的代码中,reaction变量是无用的,如果您共享整个功能,则可以将其删除。
  • 您发送消息的方式是错误的,您应该做的是:
    await ctx.send(f"[Vote] - {vote[0]}")
    (...)
    msg = await ctx.send(f"```{vote[i]}```")
    
  • 添加反应的方式也是错误的。您现在要做的是:
    @bot.command()
    async def vote(ctx) :
        vote = ctx.message.content[4:].split(" / ")
        await ctx.send(ctx.channel, "[Vote] - " + vote[0])
        for i in range(1, len(vote)):
            msg = await ctx.send(f"```{vote[i]}```")
            await msg.add_reaction("⭕")
            await msg.add_reaction("❌")
    

似乎您混合了旧的discord.py(低于v1.0)和实际的discord.py重写(低于v1.0)。以下链接总结了这两个版本之间的区别:Migrating to v1.0