python - Discord.py 如何让命令忽略参数
问题描述
所以我想做一个可以回复 .invites 或 .invites @user 的命令
当我将这个命令作为 .invites 运行时,我的错误处理程序会启动并说我需要一个 @user。
我尝试删除我的错误处理程序,但该命令什么也不做。
我怎样才能使这个命令双向工作?
@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)
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)
解决方案
您可以使用默认值来执行此操作。
然后,在您的命令中,您可以简单地检查用户是否为无。
可以使用默认值,例如通过将用户设置为None
如下所示。
@commands.command()
async def invites(self, ctx, user: discord.Member = None):
推荐阅读
- wpf - WPF Polygon绑定后,图形保持不变
- google-app-maker - 如何仅显示字符串中的前几个字符
- javascript - java - 如何使用java脚本找到两个日期之间的差异并使用年数、月数和天数显示它?
- python - 过滤字典以包含另一个字典中满足特定条件的值
- ios - 无法更新类中的值
- css - 设计登录 css Ionic
- reactjs - React Native:FlatList 索引说未定义
- google-chrome - 如何解决仅对某些用户发生的 chrome 扩展损坏安装?
- python - 具有多处理抛出类型错误的 pymysql
- string - 什么是 Fortran 等价于以下语句