set_adminrole() принимает 1 позиционный аргумент, но было задано 2

#python #python-3.x #discord #discord.py

#python #python-3.x #Discord #discord.py

Вопрос:

итак, я пытаюсь создать команду настройки в моем боте, где пользователь может выбрать то, что он хочет. Проблема в том, что я не могу заставить его работать так, как я хочу.

У меня есть это в качестве моего кода

 # Function to write changes to file
def set_adminrole(guild: Guild, *, role: Role):
    with open("admins.json") as f:
        roles = json.load(f)

    roles[str(guild.id)] = role.id

    with open("admins.json", 'w') as f:
        json.dump(roles, f, indent=4)

# Actual command

-- Not important code --

await ctx.send(f"Now, mention the role you want it to be the admin role")
    role: Message = await bot.wait_for("message", check=check)
    set_adminrole(ctx.message.guild, role.content)
    await ctx.send(f"Admin role changed to {Role(role.content).mention}... Let's keep going")
  

Когда я упоминаю роль и пытаюсь вызвать функцию с ее помощью, это выдает мне эту ошибку:
TypeError: set_adminrole() takes 1 positional argument but 2 were given
Заранее спасибо

Ответ №1:

role является параметром только для ключевых слов, поскольку он следует за * в списке параметров. Вам нужно передать значение в качестве ключевого аргумента, а не позиционного аргумента.

 set_adminrole(ctx.message.guild, role=role.content)
  

Комментарии:

1. Я изменил то, что вы мне сказали, и внес некоторые изменения. Теперь у меня есть await ctx.send(f"Now, mention the role you want it to be the admin role") role: Message = await bot.wait_for("message", check=check) actualrole = Role(role) set_adminrole(ctx.message.guild, role=actualrole) await ctx.send(f"Admin role changed to {Role(role.content).mention}... Let's keep going") И теперь у меня есть это File "D:/Ficheiros/Pastas/Tudo/Coding/Python/Projects/Server-Utils/bot.py", line 262, in start_setup actualrole = Role(role) TypeError: __init__() takes 1 positional argument but 2 were given

2. черт возьми, это нечитаемо… Вот код: hastebin.com/kinayebogi.py и это ошибка: hastebin.com/payebitiqe.sql

3. Это совершенно новая проблема, и ее следует опубликовать как отдельный вопрос.