python - 我如何在 discord.py 中获得角色的名称
问题描述
我创建了一个添加角色命令。它工作正常,但我的问题是它只适用于角色的 id。我想知道如何以某种方式将角色的 id 转换为角色的名称。 这是代码。
@commands.has_permissions(manage_messages=True)
async def addrole(self, ctx, member: discord.Member,rolename):
if member is None:
member=ctx.author
role = discord.utils.get(ctx.guild.roles, id=rolename)
await member.add_roles(role)
await ctx.send(f"{member.mention}was added {rolename}")
任何帮助表示赞赏。编辑
解决方案
我利用了 2 条评论并创建了这个完美运行的命令。
@commands.command()
@commands.has_permissions(manage_messages=True)
async def addrole(self, ctx, role: discord.Role, member: discord.Member=None):
if member is None:
member=ctx.author
await member.add_roles(role)
await ctx.send(f"{member.mention} was added {role}")```
解决方案
您可以将rolename
变量声明为 adiscord.Role
并使用将应用的隐式角色转换器,就像您的member
对象发生的情况一样。你的函数看起来像这样:
@commands.has_permissions(manage_messages=True)
async def addrole(self, ctx, member: discord.Member, role: discord.Role):
await member.add_roles(role)
await ctx.send(f"{member.mention} was added {rolename}")
推荐阅读
- powershell - 在不访问 ARS 控制台的情况下创建计算机对象
- angular - Angular 9:销毁子组件后向父组件发送数据
- r - 具有双 y 轴的 ggplot 图
- jquery - 在 asp.net core mvc 中使用 Dapper 连接表并按多个条件过滤
- python - 如何在python中使用多维列表
- docker - Traefik 2 docker不显示客户端真实IP
- python - 打开 Apache Tomcat 本地访问日志
- jupyter-notebook - 如何在 jupyter notebook 文本单元格中输入“$”?
- unit-testing - Jest .toBeCalledWith objectContaining 不匹配期望收到
- c++ - 关于派生类和基类函数的问题