我正在做一个大项目的一部分,由于在discord.py中是菜鸟,我不得不增加和删除角色而陷入僵局。
我有安装程序控制台输入,要求输入用户ID,要添加/删除的角色,然后应执行命令。控制台只是pycharm / atom等的批处理文件或运行方式。该功能不在Discord中与命令一起使用,而仅在输入中使用。抱歉,如果它是一个双重帖子,但是我从两天以来一直在寻找它,每个结果都给我一个错误代码。该函数已注释,应让您确切知道问题所在:
async def rolemanager():
await client.wait_until_ready()
function = input("Add/Remove> ")
if function == 'add':
person = input("User ID> ") # Uses non-changeable User ID
personname = client.get_user(int(person)) # Converts to Name#0000
roleadd = input("Role-Name> ") # Asks for exact role name to add
confi = input("Are you sure? y/n > ") # Asks for confirm input
if confi == "y": # If its confirmed:
await client.add_roles(name=roleadd) # Error: AttributeError: 'Bot' object has no attribute 'add_roles'
print(f"Role {roleadd} added to user {personname}") # Prints if successful, or crashes the program
else:
print("Role-Add canceled.") # If canceled, shows this
pass # Passes to restart the loop
elif function == 'remove': # Same stuff here, but remove . .
person = input("User ID> ")
personname = client.get_user(int(person))
roleremove = input("Role-Name> ")
confi = input("Are you sure? y/n > ")
if confi == "y":
await client.remove_roles(name=roleremove)
print(f"Role {roleremove} removed from user {personname}")
else:
print("Role-Remove canceled.")
pass
else:
print(f"Wrong input, use add/remove in lower-case)
完整错误:从未检索到任务异常将来:exception = AttributeError(“'Bot'对象没有属性'add_roles'”)>追溯(最近一次通话):在mainhandler中的文件“ bot2.py”,第42行等待client.add_roles(name = roleadd)AttributeError:“ Bot”对象没有属性“ add_roles”
提前感谢!
您根本不应该使用input
,因为这是一项阻止操作。相反,您应该从用户那里获得所有这些信息,作为命令调用的一部分。
您遇到的问题是add_roles
是Member
的方法,而不是Client
from discord.ext import commands
from discord import Member, Role
bot = commands.Bot("!")
@bot.command()
async def add(ctx, member: Member, role: Role):
await member.add_roles(role)
@bot.command()
async def remove(ctx, member: Member, role: Role):
await member.remove_roles(role)
bot.run("token")