如何将 discord.py remove_roles 用于多个角色? (作为参数的对象列表)

Posted

技术标签:

【中文标题】如何将 discord.py remove_roles 用于多个角色? (作为参数的对象列表)【英文标题】:How to use discord.py remove_roles for many roles? (list of objects as an args) 【发布时间】:2019-03-24 06:40:40 【问题描述】:

我正在尝试使用一个命令删除所有角色。 - 声明空列表。 - 创建实际角色列表 - 获取对象角色并将其添加到列表中。 - 使用对象角色列表调用 remove_roles。

x = []  
serverroles = ['blabla','piupiu','etc']  
for role in serverroles:  
    x.append(discord.utils.get(ctx.message.server.roles, name=role))
await client.remove_roles(ctx.message.author, x)  

收到错误:AttributeError: 'list' object has no attribute 'id' 我做错了什么?

【问题讨论】:

【参考方案1】:

如果您查看remove_roles 文档,您会看到它的函数签名是:

remove_roles(member, *roles)

*roles 表示“零个或多个参数,它们被放入名为 rolestuple 中”。您可以单独提供这些:

await client.remove_roles(member, role1, role2, role3)

或通过拆包。在你的情况下,这看起来像

await client.remove_roles(ctx.message.author, *x) 

【讨论】:

这行得通!感谢您支持像我这样的新手 :D 现在我知道拆包了。

以上是关于如何将 discord.py remove_roles 用于多个角色? (作为参数的对象列表)的主要内容,如果未能解决你的问题,请参考以下文章

如何将 discord.py 帮助命令放入嵌入中?

我如何将成员的图像和昵称放在嵌入中? (w/discord.py)

如何将等级添加到 discord.py 机器人的经验升级系统?

如何将错误添加到特定命令 discord.py

Discord.py 将角色添加到成员

如何在 discord.py 中使用高级命令处理