这应该检查特定的人是否具有静音角色。
@bot.command(pass_context=True)
@commands.has_role("Admin")
async def unmute(ctx, user: discord.Member):
role = discord.utils.find(lambda r: r.name == 'Member',
ctx.message.server.roles)
if user.has_role(role):
await bot.say("{} is not muted".format(user))
else:
await bot.add_roles(user, role)引发此错误。
命令引发异常: AttributeError:'Member‘对象没有属性'has_role’
我不知道该怎么做,所以我很感激我能得到的一切帮助
发布于 2019-02-23 21:08:39
成员没有.has_role()方法,但是可以使用.roles获取它们所有角色的列表。
要查看用户是否具有给定的角色,我们可以使用role in user.roles。
@bot.command(pass_context=True)
@commands.has_role("Admin")
async def unmute(ctx, user: discord.Member):
role = discord.utils.find(lambda r: r.name == 'Member', ctx.message.guild.roles)
if role in user.roles:
await bot.say("{} is not muted".format(user))
else:
await bot.add_roles(user, role)参考文档:https://discordpy.readthedocs.io/en/latest/api.html#member
备注: ctx.message.guild.roles过去是ctx.message.server.roles。由于API更改而更新。
发布于 2021-11-21 13:41:33
我个人用这个:
@bot.command(pass_context=True)
@commands.has_role("Admin")
async def unmute (ctx,user:discord.Member):
role = discord.utils.get(ctx.guild.roles, name="Muted")
if role in user.roles:
await user.remove_roles(role)
await user.add_roles(role)
embed = discord.Embed(title="Unmuute Members", description=f"{user.mention} has been unmuted" , color = discord.Color.blue())
embed.add_field(name='Unmuted by:' , value = f"{ctx.author.mention}")
await user.remove_roles(role)
await ctx.send(embed=embed)
else:
await ctx.send("Invalid Argumnets or The user is not muted.")所以你可以看到
role = discord.utils.get(ctx.guild.roles, name="Muted")此变量定位服务器中的静音角色。
if role in user.roles:
await user.remove_roles(role)这将从用户中删除角色。
https://stackoverflow.com/questions/54845875
复制相似问题