python Discord.py 斜杠命令强制参数,非可选参数

3z6pesqy  于 2022-12-10  发布在  Python
关注(0)|答案(2)|浏览(150)

我试图使一个简单的命令,如果你不输入2个数字作为参数,它选择1和10之间的一个随机数,问题是,我想被需要2个参数,而不是可选的,如果你把它的工作很好:

但由于这两个参数都不是强制性的,你可以只写1,使它的工作方式不是我想要的,这将导致显示的数字,而不是一个随机的2个数字之间选择:

下面是代码(如果需要):

#COMANDO SLASH NUM
@cog_ext.cog_slash(name='Numero', description='Selecciona un numero aleatorio entre el 1 y el 10 si no se especifica ninguno')
async def numero(self, ctx, primero=1, ultimo=10):
    n = random.randint(int(primero),int(ultimo))
    await ctx.send(n)
krugob8w

krugob8w1#

使用此选项

@cog_ext.cog_slash(name='Numero', description='Selecciona un numero aleatorio entre el 1 y el 10 si no se especifica ninguno')
async def numero(self, ctx, primero: int = 1, ultimo: int = 10):
    n = random.randint(primero, ultimo)
    await ctx.send(n)

上面截取的接受整数,并将参数默认为“=”符号后提供的数字。

nmpmafwu

nmpmafwu2#

您可以使用app_commands.Range来设置最小值和最大值,同时仍将它们设置为必需值。

@cog_ext.cog_slash(name='Numero', description='Selecciona un numero aleatorio entre el 1 y el 10 si no se especifica ninguno')
async def numero(self, ctx, primero:app_commands.Range[int, 1], ultimo:app_commands.Range[int, None, 10]):
    n = random.randint(int(primero),int(ultimo))
    await ctx.send(n)

相关问题