replace_roles discord.py真的令人困惑吗?

时间:2018-08-27 02:51:45

标签: python replace bots roles discord.py

我不完全了解如何使用 discord.py 中的replace roles。我已经在互联网上到处搜索过,但是似乎仍然无法弄清楚如何实现它。

我正在努力做到这一点,以便用户可以自行分配角色,但一次只能拥有一个角色。例如,如果他们具有角色“ 1” 并键入命令以获取角色“ 2” ,那么我希望该漫游器替换角色“ 1” 角色“ 2” ,因此他们应该只有角色“ 2”

我确保机器人角色在层次结构中比我为人们分配的角色要高,并且机器人具有管理角色权限。我不使用重写,而是使用python 3.6。

2 个答案:

答案 0 :(得分:0)

您只需将class func setAppleLAnguageTo(lang: String) { print(lang) let userdef = UserDefaults.standard UserDefaults.standard.set(["\(lang)"], forKey: "Applelanguages") userdef.synchronize() } Member传递给它,然后它将该成员的所有当前角色替换为您传递的角色。

Role

您可以使用@bot.command(pass_context=True) async def giverole(ctx, role: discord.Role): await bot.replace_roles(ctx.message.author, role) 之类的名称来调用它。如果呼叫者的最高角色高于漫游器的最高角色,则可能会导致!giverole @RoleName错误。

答案 1 :(得分:0)

Discord.py有一个有用的函数discord.utils.get(),该函数获取某种类型的列表以及您要查找的参数。例如,

targetrole = discord.utils.get(myserver.roles, name="MyTargetRole")

请注意,如果您要通过PM更改用户角色,则该消息将不会向您提供服务器。您可以通过client.servers相同的方式获取服务器

还要注意,通过PM将message.author传递给replace_roles将导致错误,因为该用户实例将没有服务器。而是从server.members中获取用户。您可以匹配message.author提供的名称。

第三,请注意replace_roles是一个异步函数。您可能要在其前面添加“等待”,否则可能看不到任何结果。