【问题标题】:How can I work around a member not found error?如何解决未找到成员错误?
【发布时间】:2021-03-17 05:13:07
【问题描述】:

我有一个命令,你应该有 3 个选项:

1) 提及用户

2) 输入用户 ID

3) 输入任意名称

在所有 3 种情况下,机器人都应该使用适当的输入吐出嵌入。 在这样做时,它应该:

  1. 如果是 Discord 用户,请在说明中注明。
  2. 如果不是用户,只需接受输入的名称,但无论如何发送嵌入说明中的名称。

正常工作方式:

@client.command()
async def slap(ctx, *, member: discord.Member):
    if member is None:
        re = discord.Embed()
        re.title = "Du hast die Luft geschlagen, Idiot..."
        re.set_image(url="https://i.pinimg.com/originals/8f/f9/f9/8ff9f9b0e469f751f47fc0a995a172ad.gif")
        await ctx.send(embed=re)

    else:
        er = discord.Embed()
        er.title = "Das muss weh tun..."
        er.description = f"Du hast {member.mention} geschlagen!"
        er.set_image(url=random.choice(slapgif))
        await ctx.send(embed=er)

但如果我输入一个随机名称,它会给我BadArgument 错误。我怎样才能避免这种情况并接受随机名称?

我试过了:

user: str = None

这当然只在输入时给出 ID,但也会给出像 I'mTest123 这样的名称,这当然是需要的,但如果它在服务器上,则带有 ID 的应该以 member 结尾。

【问题讨论】:

    标签: discord discord.py


    【解决方案1】:

    它给出了错误,因为您将成员参数指定为不和谐成员,将其更改为此应该可以:

        @client.command()
        async def slap(ctx, *, member=None):
           if member is None:
              re = discord.Embed()
              re.title = "Du hast die Luft geschlagen, Idiot..."
              re.set_image(url="https://i.pinimg.com/originals/8f/f9/f9/8ff9f9b0e469f751f47fc0a995a172ad.gif")
              await ctx.send(embed=re)
    
           else:
              er = discord.Embed()
              er.title = "Das muss weh tun..."
              er.description = f"Du hast {member.mention} geschlagen!"
              er.set_image(url=random.choice(slapgif))
              await ctx.send(embed=er)
    

    此外,如果您希望它接受随机名称,您可以在 if 语句中使用 isinstance() 和 type() 函数,如下所示:

        @client.command()
        async def slap(ctx, *, member=None):
           if member is None:
               re = discord.Embed()
               re.title = "Du hast die Luft geschlagen, Idiot..."
               re.set_image(url="https://i.pinimg.com/originals/8f/f9/f9/8ff9f9b0e469f751f47fc0a995a172ad.gif")
               await ctx.send(embed=re)
     
            else:
               if isinstance(member, discord.Member): #checks if it's a discord.member
                  er = discord.Embed()
                  er.title = "Das muss weh tun..."
                  er.description = f"Du hast {member.mention} geschlagen!"
                  er.set_image(url=random.choice(slapgif))
                  await ctx.send(embed=er)
               elif len(member) == 18 and type(int(member)) == int: #checks if it's an user ID
                  member2 = await ctx.guild.fetch_member(int(member))
                  er = discord.Embed()
                  er.title = "Das muss weh tun..."
                  er.description = f"Du hast {member2.mention} geschlagen!"
                  er.set_image(url=random.choice(slapgif))
                  await ctx.send(embed=er)
               else:
                  er = discord.Embed()
                  er.title = "Das muss weh tun..."
                  er.description = f"Du hast {member} geschlagen!"
                  er.set_image(url=random.choice(slapgif))
                  await ctx.send(embed=er)
    

    【讨论】:

      猜你喜欢
      • 2015-02-08
      • 1970-01-01
      • 2014-08-02
      • 2022-01-18
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      相关资源
      最近更新 更多