Discord.py Редактирование ролей

#python #discord #discord.py

#python #Discord #discord.py

Вопрос:

Я получил эту команду редактирования роли, чтобы изменить цвет и имя

Мой код:

 @client.command()
async def editrole(ctx, role: discord.Role, colour: discord.Colour, name):
    await role.edit(colour = colour, name = name)
    embed = discord.Embed(
        description = (f'The changes for role {role} have been applied.'),
        colour = discord.Colour.orange()
    ) 
    await ctx.send(embed=embed)
 

Однако я хочу, чтобы вступило в силу только одно из обоих, так, например, если я скажу «editrole <шестнадцатеричный код / цвет>»
это изменит цвет и сохранит имя.

И наоборот (только измените имя и сохраните цвет). Возможно ли это? Мне всегда приходится вводить оба аргумента, чтобы что-то происходило

Я слышал, как печатают.Необязательно [], но значения по умолчанию сбрасывают их, например, имя на «новая роль».

Ответ №1:

Вы можете сделать что-то вроде этого, чтобы сохранить name необязательный. Но я не думаю, что вы можете оставить colour необязательным. Если вы хотите colour быть необязательным, вы можете сохранить его в качестве последнего аргумента и использовать по умолчанию None , но тогда name он не будет необязательным.

 @client.command()
async def editrole(ctx, role: discord.Role, colour: discord.Colour, *, name = None):
    await role.edit(colour = colour)
    if name != None:
        await role.edit(name = name)

    embed = discord.Embed(
        description = (f'The changes for role {role} have been applied.'),
        colour = colour
    ) 
    await ctx.send(embed=embed)
 

Таким образом, вы можете указать только colour или оба colour amp; name