【问题标题】:Discord.py dm commandDiscord.py dm 命令
【发布时间】:2021-05-17 23:53:12
【问题描述】:
@bot.command()
async def dm(ctx, member: discord.Member):
  id = member.id
  for a in range(5):
    await bot.send_message(id, "")

我这样做了,我的错误是:

从 exc 中引发 CommandInvokeError(exc) discord.ext.commands.errors.CommandInvokeError:命令引发异常:AttributeError:'Bot'对象没有属性'message'

【问题讨论】:

  • 请改进您的问题标题

标签: python discord.py


【解决方案1】:

尝试使用member.send 而不是bot.send_message

【讨论】:

    【解决方案2】:

    这是你的错误的重要部分,它基本上已经说明了它是关于什么的; bot 没有message 的属性,在你的情况下它没有并且应该是member.send。您也不需要获取成员的 id。

    AttributeError: 'Bot' object has no attribute 'message'
    

    通过重写您的命令,这些错误已修复

    @bot.command()
    async def dm(ctx, member: discord.Member):
      for a in range(5):
        await member.send("text")
    

    您还可以向命令添加更具体的细节,在此示例中,如果您不包含成员,则不会导致错误,或者如果成员不可访问,它将处理错误。

    @bot.command()
    async def dm(ctx, member: discord.Member=None):
      if member == None:
        await ctx.send('Mention a member')
        return
      try:
        for a in range(5):
          await member.send("text")
    
      except commands.CommandInvokeError:
          await ctx.send("Couldn't send message to user")
    

    【讨论】:

      【解决方案3】:

      只需添加user = await bot.fetch_user(id),然后添加await user.send("Hello")

      @bot.command()
      async def dm(ctx, member: discord.Member):
        id = member.id
        user = await bot.fetch_user(id)
        for a in range(5):
          await user.send("Hello")
      

      【讨论】:

        猜你喜欢
        • 2019-08-22
        • 1970-01-01
        • 1970-01-01
        • 2021-05-20
        • 2020-03-31
        • 2021-03-19
        • 2020-10-10
        • 1970-01-01
        • 2021-11-23
        相关资源
        最近更新 更多