首页 > 解决方案 > 命令引发异常:AttributeError: 'str' object has no attribute 'mention'

问题描述

@client.command()
async def unban(ctx, *, member):
  banned_user = await ctx.guild.bans()
  member_name, member_discriminator = member.split('#')

  guild = ctx.guild
  embed = discord.Embed(title="unban", description=f"{member.mention} has been Unbanned ", colour=discord.Colour.red())

  for ban_entry in banned_user:
    user = ban_entry.user

    if (user.name, user.discriminator) == (member_name, member_discriminator):
      await ctx.guild.unban(user)
      await ctx.send(embed=embed)
    await member.send(f"you have been unbanned from: **{guild.name}**")
    return

为什么我会得到AttributeError: 'str' object has no attribute 'mention'

标签: pythondiscord.py

解决方案


它正在发生,因为Member它只是一个字符串。如果它只是一个普通字符串,它不会被识别为discord.Member并且你不能使用。.mention相反,请使用userfrom 行user = ban_entry.user,因为它是discord.User您可以提及的。

代码:

@client.command()
async def unban(ctx, *, member):
  banned_user = await ctx.guild.bans()
  member_name, member_discriminator = member.split('#')

  guild = ctx.guild

  for ban_entry in banned_user:
    user = ban_entry.user

    if (user.name, user.discriminator) == (member_name, member_discriminator):
      await ctx.guild.unban(user)
      embed = discord.Embed(title="unban", description=f"{user.mention} has been Unbanned ", colour=discord.Colour.red())
      await ctx.send(embed=embed)
    await member.send(f"You have been unbanned from: **{guild.name}**")
    return

推荐阅读