Как избавиться от ошибки role is a required argument that is missing.?

Рейтинг: -1Ответов: 1Опубликовано: 10.01.2023
async def Rainbow(ctx, role : disnake.Role):
    if ctx.message.author.id in acces_id:
        guild = ctx.guild
        role = disnake.utils.get(ctx.message.guild.roles, name = "Радужный доступ")
        user = ctx.message.author
        await guild.create_role(name="Радужный доступ", colour = disnake.colour(0xff0033))
        await user.add_roles(ctx.message.author, role)
    else:
        await ctx.send("Уходи")

Возможно я в глаза дол#люсь, но я не понимаю в чем ошибка, Гуглил много раз

Ответы

▲ 0

Во-первых о ошибке. Она говорит о том, что вы при написании команды prefixRainbow не указываете обязательный аргумент role в строке:

async def Rainbow(ctx, role : disnake.Role):

То есть должно это выглядеть примерно так: +Rainbow @role

Во-вторых зачем вы получаете сначала роль:

role = disnake.utils.get(ctx.message.guild.roles, name = "Радужный доступ")

А потом ещё и создаете такую же:

await guild.create_role(name="Радужный доступ", colour = disnake.colour(0xff0033))

Вы либо взяли код из интернета, либо просто не понимаете о чём пишете.

Исправьте свой код, либо попробуйте мою версию:

async def Rainbow(ctx):
    if ctx.author.id in #id:
        guild = ctx.guild
        role = disnake.utils.get(ctx.guild.roles, name = "Радужный доступ")
        user = ctx.author
        if role is None:
            role = await guild.create_role(name="Радужный доступ", colour = disnake.colour(0xff0033))
        await user.add_roles(role)
    else:
        await ctx.send("Вы не можете использовать эту команду.")