python - discord.py 检查用户是否具有特定角色
问题描述
我试图让这个来检查用户是否具有被标记的角色。
discord.utils.get(ctx.guild.roles, name=rolename) 和 discord.utils.get(user.roles, name=rolename)
@bot.command()
@commands.has_permissions(manage_roles=True)
async def giverole(ctx, user: discord.Member, rolename: discord.Role):
role = discord.utils.get(ctx.guild.roles, name=rolename)
if(not role in user.roles):
await user.add_roles(rolename)
embed=discord.Embed(title=f"{user.name} Has been added to a role called: {rolename.name}", color=discord.Color.dark_purple())
await ctx.send(embed=embed)
else:
await ctx.send(f"Hey {ctx.author.name}, {user.name} already has the role called: {rolename.name}")
没有错误只是不断地赋予角色而不是检查用户是否具有角色。
解决方案
@bot.command()
@commands.has_permissions(manage_roles=True)
async def giverole(ctx, user: discord.Member=None, rolename:discord.Role=None):
if rolename in user.roles:
await ctx.send("Person already has role")
else:
await user.add_roles(rolename)
await ctx.send("Person doesn't have the role and it has been given to him/her")
确保机器人的角色高于您尝试赋予用户的角色,因为如果不是,那么您将收到错误50013 Missing Permissions.
推荐阅读
- c# - .Net Core 3.0 JsonSerializer 填充现有对象
- android - 如何切换我准备使用的协议类型?
- typo3 - 流体对象,数组仅显示条目数
- ruby - idp_metadata_parser.parse_remote OpenSSL::X509::CertificateError: 嵌套 asn1 错误
- linux - 如何在 Jenkins 的 docker 容器中执行命令
- html - WordPress - 自定义存档页面
- javascript - .NET Core - 通过 Wrapper 异步加载视图组件(客户端)
- keras - 只有一个输出时的数据不平衡
- ios - 为什么当我点击按钮时,按钮的文本颜色没有改变?
- java - 我想做一个可滑动的活动