#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. Это совершенно новая проблема, и ее следует опубликовать как отдельный вопрос.