aleee
aleee

Reputation: 120

unban command discord.py rewrite

I need an efficent discord.py command for unban users by their tag, not their name and discriminator. how i can do? This is the code that I made and it works with *unban name#1234.

@client.command()
@commands.has_any_role(702909770956406885, 545323952428417064, 545323570587369472)
async def unban(ctx, *, member):
    banned_user = await ctx.guild.bans()
    member_name, member_discriminator = member.split("#")
    for ban_entry in banned_user:
        user = ban_entry.user

        if (user.name, user.discriminator) == (member_name, member_discriminator):
            await ctx.guild.unban(user)
            embed = discord.Embed(title="Fatto!", description=f"Ho sbannato {user.mention}!", color=discord.Color.green())
            await ctx.send(embed=embed)
            return

How can i make it work with tags? I know you can't directly tag a banned user but with his id you can do it. Thank you for answers!

Upvotes: 0

Views: 3344

Answers (3)

ily Fiend
ily Fiend

Reputation: 37

Hope this helps

from discord.ext.commands import has_permissions

@bot.command()
@has_permissions(ban_members=True)
async def unban(ctx, userId: discord.User.id):
  user = get(id=userId)
  await ctx.guild.unban(user)

Upvotes: 2

NOT kar1m yt
NOT kar1m yt

Reputation: 198

@client.command(description="bans a user with specific reason (only admins)") #ban
@commands.has_permissions(administrator=True)
async def ban (ctx, member:discord.User=None, reason =None):
 try:
    if (reason == None):
        await ctx.channel.send("You  have to specify a reason!")
        return
    if (member == ctx.message.author or member == None):
        await ctx.send("""You cannot ban yourself!""") 
    else:
        message = f"You have been banned from {ctx.guild.name} for {reason}"
        await member.send(message)
        await ctx.guild.ban(member, reason=reason)
        print(member)
        print(reason)
        await ctx.channel.send(f"{member} is banned!")
 except:
    await ctx.send(f"Error banning user {member} (cannot ban owner or bot)")

Upvotes: 0

Peter
Peter

Reputation: 120

Use the member object as a parameter in your unban function.

Ex:

@client.command()
@commands.has_any_role(702909770956406885, 545323952428417064, 545323570587369472)
async def unban(ctx, *, member: discord.Member):
    await ctx.guild.unban(member)

Then in discord you could execute the command by mentioning the user. Ex: *unban @aleee

Upvotes: 0

Related Questions