Emir Sürmen
Emir Sürmen

Reputation: 950

Discord.py Giving role

@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.")

So i have this command that creates a role, and gives it to the user. But It doesnt create the role and doesnt throw any errors, can you guys help? The giving role part works but the creating role doesn't.

Upvotes: 0

Views: 139

Answers (1)

AltF2
AltF2

Reputation: 41

Well you aren't creating the role, you could try something like this:

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)

You could also add an try and except discord.Forbidden to handle permission errors

Upvotes: 1

Related Questions