如何在Pycord框架的斜杠命令中设置可选参数
Pycord斜杠命令设置可选参数解决方案
你之前直接给参数设置None默认值不生效,是因为Pycord的斜杠命令参数默认按必填处理,没有对应类型标注或者显式声明的话,默认值不会被识别。可以用下面两种方法实现需求:
方法1:用discord.Option显式声明(兼容性最好)
直接通过Option类指定参数属性,把required设为False,同时设置默认值即可:
import discord from discord import Option @bot.slash_command(name='greet', description='Greet someone!') async def greet(ctx, name: Option(str, description="要问候的对象", required=False, default="朋友")): await ctx.send(f'Hello {name}!')
方法2:配合typing.Optional加默认值
如果不想写太长的Option声明,也可以用Optional类型标注搭配默认值,Pycord会自动识别为可选参数:
from typing import Optional @bot.slash_command(name='greet', description='Greet someone!') async def greet(ctx, name: Optional[str] = "朋友"): await ctx.send(f'Hello {name}!')
注意:如果你要把默认值设为
None,需要在发消息前做判空处理,否则直接拼接字符串会触发类型错误,比如:async def greet(ctx, name: Optional[str] = None): target = name if name is not None else "朋友" await ctx.send(f'Hello {target}!')
内容的提问来源于stack exchange,提问作者BlazingLeaf12
相关产品推荐
相关产品推荐

