discord - 如何解决未找到成员错误?
问题描述
我有一个命令,你应该有 3 个选项:
1)提及用户
2) 输入用户名
3) 输入任意名称
在所有 3 种情况下,机器人都应该使用适当的输入吐出嵌入。在这样做时,它应该:
- 如果是 Discord 用户,请在描述中标记。
- 如果它不是用户,则只需接受输入的名称,但无论如何发送带有描述中名称的嵌入。
它的正常工作方式:
@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 的应该以 a 结尾。member
解决方案
它给出了错误,因为您将成员参数指定为不和谐成员,将其更改为此应该可以:
@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)
推荐阅读
- excel - VBA For循环工作一次,然后在第二次尝试它会创建一个运行时错误
- swift - IKScannerDeviceViewDelegate 从未调用过
- r - R glm 中的优势比非常高
- html - CSS动画未应用于给定路径
- asp.net-mvc-5 - VS 2019 v16.8 build,MVC 表单和 javascripts 停止工作
- javascript - 反转对象层次结构
- sql-server - 尽管进程在不同的记录上运行,但死锁
- discord.js - Discord.js - 通过 awaitReactions 方法获取执行命令的多个反应
- pandas - 带有两层排序的 Concat DataFrame
- google-cloud-platform - VPC 网络 - IP 未使用,但实际 ping