Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
6.2 kB
3
Indexable
Never
import discord
import asyncio
import random
from discord.ext import commands
from discord.commands import MissingPermissions


servers = [649691952568205342] #server ids
EMBED_DEFAULT_COLOR = 0xfcd005
CHANNEL_LEAVE_ID = 649698289221894164
id_category = 852277523868942377
id_channel_ticket_logs = 852278111491063839
id_staff_role = 851174263381426246
embed_color = 0xfcd005

class CreateTicket(discord.ui.View):
    def __init__(self):
        super().__init__(timeout=None)

@discord.ui.button(
    label = "Create Ticket", style=discord.ui.ButtonStyle.green, emoji="đŸŽ«", custom_id="create_ticket:green"
)
async def create_ticket(self, button: discord.ui.Button, interaction: discord.Interaction):
    await interaction.response.send_message("Un ticket a été crée.....", ephemeral=True)


class Bot(commands.Bot):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.persistent_views_added = False

    async def on_ready(self):
        if not self.persistent_views_added:
            self.add_view(CreateTicket(self))
            self.persistent_views_added = True
            print("Persistent views added")

        print(f"Le bot est prĂȘt | ConnectĂ© en temps que {self.user}")

bot = commands.Bot(command_prefix='!', intents = discord.Intents.all()) 

@bot.command()
@commands.has_permissions(manage_guild=True)
async def setup_tickets(ctx):
    embed = discord.Embed(title ='La boite Ă  ticket de LĂ©on', description ='Bienvenue Ă  toi, cette boite est rĂ©alisĂ©e pour t\'aider dans tes requĂȘtes ', color=embed_color)
    await ctx.send(embed=embed, view=CreateTicket())

@bot.event
async def on_ready():
    print("We have logged in!")

@bot.slash_command(guilds_ids = servers, name = "help", description = "Help command")
async def help(ctx):
    rhelp = discord.Embed(color = EMBED_DEFAULT_COLOR)
    rhelp.set_author(name = 'Commands/Help', icon_url = '')
    rhelp.set_thumbnail(url='https://cdn.discordapp.com/attachments/887759600365993994/924789487740002334/logo-blue.png')
    rhelp.add_field(name= 'help', value = 'Cette commande vous a ramené ici !', inline = False)
    rhelp.add_field(name= 'version', value = 'Affiche le numéro de la version actuelle et la mise à jour récentes.', inline = False)
    rhelp.add_field(name= 'touches', value = 'Affiche les touches du serveur.', inline = False)
    rhelp.add_field(name= 'play `#music name or music link`', value = '\nCette commande permet de jouer de la musique sur le serveur.', inline = False)
    rhelp.set_footer(text = 'Utilise le prefix "!" avant chaque commande !')
    await ctx.respond(embed = rhelp)

@bot.slash_command(guilds_ids = servers, name = "version", description = "Shows the actual patchnote")
async def version(ctx):
    ver = discord.Embed(color = EMBED_DEFAULT_COLOR)
    ver.set_author(name = 'Patchnote', icon_url= '')
    ver.add_field(name = 'Version: 3.0', value = f'‱ Montre la nombre de joueurs \n ‱ Bloque les liens', inline= False)
    await ctx.respond(embed = ver)


@bot.slash_command(guild_ids = servers, name = "ban", description = "Ban un membre")
@commands.has_permissions(ban_members = True, administrator = True)
async def ban(ctx, member: discord.Option(discord.Member, description = "Qui voulez vous ban ?"), reason: discord.Option(str, description = "Why?", required = True)):
    if member.id == ctx.author.id: #checks to see if they're the same
        await ctx.respond("Tu ne peux te ban toi mĂȘme")
    elif member.guild_permissions.administrator:
        await ctx.respond("ArrĂȘte d'essayer de ban un Admin :rolling_eyes:")
    else:
        if reason == None:
            reason = f"Aucune raison procurée par {ctx.author}"
        await member.ban(reason = reason)
        await ctx.respond(f"<@{ctx.author.id}>, <@{member.id}> a été banni de maniÚre parfaite \n\nRaison du ban: {reason}")
    
@ban.error
async def banerror(ctx, error):
    if isinstance(error, MissingPermissions):
        await ctx.respond("Vous devez avoir les droits d'administrateur pour faire cela !!")
    else:
        await ctx.respond("Une erreur est survenue") #most likely due to missing permissions
        raise error

@bot.slash_command(guild_ids = servers, name = "kick", description = "Kicks a member")
@commands.has_permissions(kick_members = True, administrator = True)
async def kick(ctx, member: discord.Option(discord.Member, description = "Who do you want to kick?"), reason: discord.Option(str, description = "Why?", required = False)):
    if member.id == ctx.author.id: #checks to see if they're the same
        await ctx.respond("Tu ne peux te kick toi mĂȘme")
    elif member.guild_permissions.administrator:
        await ctx.respond("ArrĂȘte d'essayer de kick un Admin :rolling_eyes:")
    else:
        if reason == None:
            reason = f"None provided by {ctx.author}"
        await member.kick(reason = reason)
        await ctx.respond(f"<@{ctx.author.id}>, <@{member.id}> a été kick du serveur !\n\nRaison: {reason}")

@kick.error
async def kickerror(ctx, error):
    if isinstance(error, MissingPermissions):
        await ctx.respond("Vous devez avoir les droits d'administrateur pour faire cela !")
    else:
        await ctx.respond("Une erreur est survenue") #most likely due to missing permissions 
        raise error

@bot.slash_command(guilds_ids=servers, name = "purge", description = "Clear a channel's messages")
@commands.has_permissions(manage_messages = True)
@commands.cooldown(1,5, commands.BucketType.user)
async def purge(ctx, messages: discord.Option(int, description = "Combien de messages voulez vous supprimez", required = True )):
    await ctx.defer()
    z = await ctx.channel.purge(limit = messages)
    await ctx.respond(f"J'ai clear {len(z)}")

@purge.error
async def purgeerror(ctx, error):
    if isinstance(error, MissingPermissions):
        await ctx.respond("Vous devez avoir les droits d'administrateur pour faire cela !")
    elif isinstance(error, discord.ext.commmands.CommandOnCooldown):
        await ctx.respond(error)
    else:
        raise error