我不完全了解如何使用 discord.py 中的replace roles
。我已经在互联网上到处搜索过,但是似乎仍然无法弄清楚如何实现它。
我正在努力做到这一点,以便用户可以自行分配角色,但一次只能拥有一个角色。例如,如果他们具有角色“ 1” 并键入命令以获取角色“ 2” ,那么我希望该漫游器替换角色“ 1” 和角色“ 2” ,因此他们应该只有角色“ 2” 。
我确保机器人角色在层次结构中比我为人们分配的角色要高,并且机器人具有管理角色权限。我不使用重写,而是使用python 3.6。
答案 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是一个异步函数。您可能要在其前面添加“等待”,否则可能看不到任何结果。