So my Discord bot can now kick people from my server. But right now everyone can use the kick command. And I don’t want that. How can I fix this?
This is the code so far:
@bot.command(name="kick", aliases=["k"], help= "Kicks specified user from the server.") async def kick(ctx, member: discord.Member, *, reason=None): await member.send(f"You have been kicked, reason: {reason}") await member.kick(reason=reason) await ctx.send(f'User {member} has been kicked.') embed=discord.Embed( title= f"{bot.user} kicked {member}", color=bot.embed_color, timestamp = datetime.datetime.now(datetime.timezone.utc) ) embed.set_author( name = ctx.author.name, icon_url = ctx.author.avatar_url ) embed.set_footer( text = bot.footer, icon_url = bot.footerimg ) await bot.debug_channel.send(embed = embed) print("Sent and embed") await ctx.message.add_reaction('✅') print("Added a reaction to a message")
Thanks in advance!
Advertisement
Answer
I have done that before, this answer may help.
First, import the necessary modules first
import discord from discord.ext import commands from discord.ext.commands import has_permissions
I assume you already set up and defined the bot. Here’s the whole code that you should replace with:
@bot.command(name="kick", aliases=["k"], help= "Kicks specified user from the server.") @has_permissions(administrator=True) async def kick(ctx, member: discord.Member, *, reason=None): await member.send(f"You have been kicked, reason: {reason}") await member.kick(reason=reason) await ctx.send(f'User {member} has been kicked.') embed=discord.Embed( title= f"{bot.user} kicked {member}", color=bot.embed_color, timestamp = datetime.datetime.now(datetime.timezone.utc) ) embed.set_author( name = ctx.author.name, icon_url = ctx.author.avatar_url ) embed.set_footer( text = bot.footer, icon_url = bot.footerimg ) await bot.debug_channel.send(embed = embed) print("Sent and embed") await ctx.message.add_reaction('✅') print("Added a reaction to a message")
What I added was simply @has_permissions(administrator=True)
. The answer you got previously in this post missed the s after permission, so it should be @has_permissions
instead of @has_permission
.
I hope this works! Let me know if you it works!