首页 > 解决方案 > Discord.py 赋予角色

问题描述

@client.command()
@commands.has_permissions(manage_messages=True)
async def mute(ctx, member: discord.Member):
    try:
        guild = ctx.guild
        rolecreate = "MutedByCloudy"
        await guild.create_role(rolecreate, colour=discord.Colour.red())
        if member.guild_permissions > ctx.author.guild_permissions or member.guild_permissions.administrator:
            await ctx.send("I can't mute that user. User probably has more perms than me or you")
        else:
            if member.id == 739424025205538817:
                await ctx.send("Nice try. I can't mute myself.")
            else:
                role = get(member.guild.roles, name='MutedByCloudy')
                await member.add_roles(role)
                embed=discord.Embed(title="User Muted! :white_check_mark:", description=f"**{member}** was muted by **{ctx.message.author}**!", color=0x2f3136)
                await ctx.send(embed=embed)
    except:
            await ctx.send(":x: Something happened. I don't know what.")

所以我有这个创建角色的命令,并将其提供给用户。但是它不会创建角色并且不会抛出任何错误,你们能帮忙吗?给予角色部分有效,但创造角色无效。

标签: pythondiscord.py

解决方案


那么你没有创建角色,你可以尝试这样的事情:

role = discord.utils.get(ctx.guild.roles, name='MutedByCloudy')
if not role:
    role = await ctx.guild.create_role(name='MutedByCloudy', reason='Role for muting, auto generated by Cloudy')
    for channel in ctx.guild.channels:
        await channel.set_permissions(role, send_messages=False,
                                      read_message_history=False,
                                      read_messages=False)

您还可以添加 try 和 except discord.Forbidden 来处理权限错误


推荐阅读