Discord.py dm 命令

时间:2021-02-15 02:55:21

标签: python discord.py

@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'

3 个答案:

答案 0 :(得分: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")

答案 1 :(得分:0)

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

答案 2 :(得分:0)

只需添加 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")