как сделать параметр необязательным в disnake?

Рейтинг: 0Ответов: 2Опубликовано: 23.02.2023

Есть вот такой кусок кода:

@bot.slash_command()
async def role(inter, role: disnake.Role = commands.Param(description = "Роль"))

Хочу сделать, чтобы role стал необязательным параметром. Пробовал в commands.Param() внести required = False, но тогда в консоли вижу это:

Traceback (most recent call last):
  File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in <module>
    start(fakepyfile,mainpyfile)
  File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start
    exec(open(mainpyfile).read(),  __main__.__dict__)
  File "<string>", line 590, in <module>
  File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.9/site-packages/disnake/ext/commands/params.py", line 1169, in Param
    raise TypeError(f"Param() got unexpected keyword arguments: {a}")
TypeError: Param() got unexpected keyword arguments: 'required'

[Program finished]

Ответы

▲ 0
@bot.slash_command()
async def role(inter, role: disnake.Role = None)
▲ 0

Смотрите документацию https://docs.disnake.dev/en/stable/ext/commands/api/app_commands.html#disnake.ext.commands.Param Там есть параметр default, который как раз вам и нужен.

@bot.slash_command()
async def role(inter, role: disnake.Role = commands.Param(description = "Роль", default = None))