在 discord.py 中获取成员的角色

Posted

技术标签:

【中文标题】在 discord.py 中获取成员的角色【英文标题】:Get the role(s) of a member in discord.py 【发布时间】:2021-10-16 09:08:07 【问题描述】:

我正在尝试创建一个显示提及用户角色的命令。 这个命令是一个测试命令,我将在我的静音命令中实现它。 (该命令会移除成员当前角色并添加静音角色)

这就是我所拥有的:

@client.command()
async def roles(ctx, member: discord.Member):
  roles = member.roles
  role_names = [role.name for role in roles]
  await ctx.send(role_names)

命令运行良好,但输出与我预期的不太一样。

输出:

['@everyone', 'Member']

它正确显示了用户提到的 2 个角色,但它没有按照我想要的特定方式格式化。

我希望输出只是“成员”或提到的成员除了@everyone 之外的任何其他角色。基本上,我想从输出中删除方括号和“@everyone”,只留下角色名称。

希望有人可以帮助我。

谢谢!

【问题讨论】:

【参考方案1】:

要解决您的问题,您只需将来自role_names 的信息格式化为字符串形式,然后删除'@everyone'。您可以使用列表推导和 join() 方法。 这是修改后的代码:

@client.command()
async def roles(ctx, member: discord.Member):
  roles = member.roles
  role_names = ' '.join([role.name for role in roles if role.name != '@everyone'])
  await ctx.send(role_names)

【讨论】:

以上是关于在 discord.py 中获取成员的角色的主要内容,如果未能解决你的问题,请参考以下文章

使用 Discord Py 计算具有特定角色的所有成员

我怎样才能允许人们使用 discord.py 只踢低于其角色的成员?

Discord Py - 如何使用文本命令向公会的所有成员添加多个角色

当用户是角色 discord.py 时,头像命令给出错误

(discord.py) 获取特定语音频道中所有成员的列表

如何从 ID discord.py 中获取成员对象