datboygamer
datboygamer

Reputation: 1

discord python bot kick command

i am trying to make a discord bot that can kick people with the command .kick
I have it display a message that says (username) has been kicked from the server and the message still shows up, but it doesn't actually kick them.

Here is my code:

    import discord
    from discord.ext import commands
    
    client = commands.Bot(command_prefix=".")
    
    @client.event
    async def on_ready():
        print("Bot is Ready")
        
    @client.command(aliases=['c'])
    @commands.has_permissions(manage_messages = True)
    async def clear(ctx,amount=2):
        await ctx.channel.purge(limit = amount)
     
    @client.command(aliases=['k'])
    @commands.has_permissions(kick_members = True)
    async def kick(ctx,member : discord.Member,*,reason= "I do not need a reason"):
        await ctx.send(member.name + " has been kicked from the server, because "+reason)
        await member.kick(reason=reason)

    @client.command(aliases=['b'])
    @commands.has_permissions(ban_members = True)
    async def ban(ctx,member : discord.Member,*,reason= "I do not need a reason"):
        await ctx.send(member.name + " has been banned from the server, because"+reason)
        await member.ban(reason=reason)

the error message says:

    File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped
        ret = await coro(*args, **kwargs)
      File "C:\Users\user\discordbot\bot.py", line 18, in kick
        await member.kick(reason=reason)
      File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\member.py", line 512, in kick
        await self.guild.kick(self, reason=reason)
      File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\guild.py", line 1849, in kick
        await self._state.http.kick(user.id, self.id, reason=reason)
      File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\http.py", line 241, in request
        raise Forbidden(r, data)
    discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions

The above exception was the direct cause of the following exception:

    Traceback (most recent call last):
      File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\bot.py", line 903, in invoke
        await ctx.command.invoke(ctx)
      File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 859, in invoke
        await injected(*ctx.args, **ctx.kwargs)
      File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 94, in wrapped
        raise CommandInvokeError(exc) from exc
    discord.ext.commands.errors.CommandInvokeError: Command raised an exception: Forbidden: 403 Forbidden (error code: 50013): Missing Permissions

please note that my .clear command is working perfectly fine, it is just kick and ban

please help, I am on python 3.9.0

Upvotes: 0

Views: 1826

Answers (2)

Nilesh Pal
Nilesh Pal

Reputation: 31

This type of error comes when either user who is giving this command or your bot has not been given such admin permissions. In your server you can simply make one role for your bot or can give all privileges to your bot if it is managed by you.

link below may help you regarding this https://support.discord.com/hc/en-us/articles/206029707-How-do-I-set-up-Permissions-

Upvotes: 0

cejay
cejay

Reputation: 11

@client.command()
@commands.has_permissions(administrator=True)
async def kick(ctx, member: discord.Member):
    await member.kick()
    await ctx.message.add_reaction("reaction")

    await ctx.send(f"{member.name} has been kicked by {ctx.author.name}!")

    await log_channel.send(f"{ctx.author.name} has kicked {member.display_name}")

This is what I used for my discord bot. It only lets the people with the kick permission use this command. I hope this helped.

Upvotes: 1

Related Questions