When someone tries to kick a higher in rank admin the bot does nothing not even an error, I want it instead to return a text into chat. Also if someone tries to kick/ban himself it works, how can I disable that? Thanks here is the code
JavaScript
x
12
12
1
@client.command()
2
@commands.has_permissions(kick_members = True)
3
async def kick(ctx, member : discord.Member, *, reason=None):
4
await member.kick(reason=reason)
5
await ctx.channel.send(f"User {member} got kicked")
6
7
@client.command()
8
@commands.has_permissions(ban_members = True)
9
async def ban(ctx, member : discord.Member, *, reason=None):
10
await member.ban(reason=reason)
11
await ctx.channel.send(f"User {member} got banned")
12
Advertisement
Answer
you can compare top_role of the members
JavaScript
1
18
18
1
@client.command()
2
@commands.has_permissions(kick_members = True)
3
async def kick(ctx, member : discord.Member, *, reason=None):
4
if ctx.author.top_role <= member.top_role:
5
await ctx.send("The person you tried to kick has equal or higher role than you")
6
return
7
await member.kick(reason=reason)
8
await ctx.channel.send(f"User {member} got kicked")
9
10
@client.command()
11
@commands.has_permissions(ban_members = True)
12
async def ban(ctx, member : discord.Member, *, reason=None):
13
if ctx.author.top_role <= member.top_role:
14
await ctx.send("The person you tried to ban has equal or higher role than you")
15
return
16
await member.ban(reason=reason)
17
await ctx.channel.send(f"User {member} got banned")
18