Python Discord.py如何获取忽略参数的命令
所以我想发出一个命令,可以回复.invests或.invests@user 当我以.invests的形式运行这个命令时,我的错误处理程序会启动并说我需要一个@user 我试图删除我的错误处理程序,但命令没有执行任何操作 如何使此命令双向工作Python Discord.py如何获取忽略参数的命令,python,arguments,discord,bots,Python,Arguments,Discord,Bots,所以我想发出一个命令,可以回复.invests或.invests@user 当我以.invests的形式运行这个命令时,我的错误处理程序会启动并说我需要一个@user 我试图删除我的错误处理程序,但命令没有执行任何操作 如何使此命令双向工作 @commands.command() async def invites(self, ctx, user: discord.Member): global last1 global invites1
@commands.command()
async def invites(self, ctx, user: discord.Member):
global last1
global invites1
try:
userinvitecount = 0
gld = self.bot.get_guild(int(guild_id))
while True:
invs = await gld.invites()
tmp = []
for i in invs:
if user.id == i.inviter.id:
top = i.uses
userinvitecount += int(top)
tmp.append(tuple((i.inviter.id, i.code, i.uses)))
invites1 = tmp
break
usr = gld.get_member(int(user.id))
eme = discord.Embed(description=f"{usr.mention} has {userinvitecount} invite's", color=0x03d692, title=" ")
await ctx.send(embed=eme)
except commands.MissingRequiredArgument:
user = ctx.message.author.id
userinvitecount = 0
gld = self.bot.get_guild(int(guild_id))
while True:
invs = await gld.invites()
tmp = []
for i in invs:
if user.id == i.inviter.id:
top = i.uses
userinvitecount += int(top)
tmp.append(tuple((i.inviter.id, i.code, i.uses)))
invites1 = tmp
break
usr = gld.get_member(int(user.id))
eme = discord.Embed(description=f"{usr.mention} has {userinvitecount} invite's", color=0x03d692, title=" ")
await ctx.send(embed=eme)
您可以通过使用默认值来实现这一点。
在命令中,您只需检查用户是否为None 可以使用默认值,例如将用户设置为
None
,如下所示
@commands.command()
异步def邀请(self、ctx、user:discord.Member=None):
``@commands.command()异步def邀请(self,ctx,user:discord.Member=None):如果user为None:user=ctx.message.author``工作得很好谢谢
if isinstance(error, commands.MissingRequiredArgument):
# generic error handler for commands entered wrong
embed = discord.Embed(
title="Failed",
description="Failed to use command properly \n Please try again.",
colour=discord.Colour.blurple(),
)
await ctx.send(embed=embed)