Reputation: 950
@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
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