Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
6.8 kB
18
Indexable
Never
import discord,os
from datetime import datetime
from datetime import timedelta
from discord import app_commands,utils
from discord.ext import commands


token_bot = REMOVI MEU CODIGO POR SEGURANÇA
intents = discord.Intents.default()
client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print (f'estou pronto')

id_servidor = REMOVI POR SEGURANÇA
id_staff = REMOVI POR SEGURANÇA
id_staff_shanks = REMOVI POR SEGURANÇA
id_staff_klaus = REMOVI POR SEGURANÇA
id_categoria_ticket = REMOVI POR SEGURANÇA


emojiglobal = "🧰" # ESSE PODE MUDAR
tipoticket = "1"
staff = "1"
mensagemcanal = "1"
categoriadeatendimento = "1"
mensagemerro = 'Sem permissão'


class Dropdown(discord.ui.Select):
    def __init__(self):
        options = [
            discord.SelectOption(value="ajuda", label="Ajuda", description="MUDAR DEPOIS", emoji="👋"),
            discord.SelectOption(value="atendimento", label="Atendimento",description="MUDAR DEPOIS" ,emoji="📨"),
        ]
        super().__init__(
            placeholder="Selecione uma opção...",
            min_values=1,
            max_values=1,
            options=options,
            custom_id="persistent_view:dropdown_help"
        )

    async def callback(self, interaction: discord.Interaction):
        global emojiglobal
        global tipoticket
        global staff
        global mensagemcanal
        global categoriadeatendimento

        self.placeholder = "Selecione uma opção"
        self.options = self.options
        await interaction.message.edit(view=self.view)

        if self.values[0] == "ajuda":
            emojiglobal = "🧰" #PODE MUDAR DEPOIS
            tipoticket = "Ticket de ajuda"
            staff = id_staff
            mensagemcanal = "Fale com o nosso suporte"
            categoriadeatendimento = id_categoria_ticket
            await interaction.response.send_message(mensagemcanal, ephemeral=True, view=CreateTicket())


        elif self.values[0] == "atendimento":
            emojiglobal = "🧰" #PODE MUDAR DEPOIS
            tipoticket = "Ticket de ajuda"
            staff = id_staff
            mensagemcanal = "PODE MUDAR DEPOIS"
            categoriadeatendimento = id_categoria_ticket
            await interaction.response.send_message(mensagemcanal, ephemeral=True, view=CreateTicket())


class DropdownView(discord.ui.View): 
    def __init__(self): 
        super().__init__(timeout=None) 
        self.add_item(Dropdown())


class CreateTicket(discord.ui.View):
    def __init__(self):
        super().__init__(timeout=None)
        self.value=None
    @discord.ui.button(label="Abrir Ticket",style=discord.ButtonStyle.blurple, emoji='📨')
    async def ticket(self,interaction: discord.Interaction, button: discord.ui.Button):
        self.value = True
        self.stop()
        ticket = None
        embedticket = discord.Embed(
            colour=25252, #mudar a cor depois
            title='Suporte',
            description=f"> Olá, {interaction.user.mention}. MUDAR DEPOIS XXXXXXX."
        )
        
        atendente = interaction.guild.get_role(staff)
        categoria = interaction.guild.get_channel(categoriadeatendimento)
        overwrites = { # definindo as permissões para o canal que será criado abaixo, dica default_role é o everyone
            interaction.guild.default_role: discord.PermissionOverwrite(read_messages=False,send_messages=True,attach_files=True,use_application_commands=True),
            interaction.user: discord.PermissionOverwrite(read_messages=True,send_messages=True),
            atendente: discord.PermissionOverwrite(read_messages=True,send_messages=True, use_application_commands=True)
        }

        ticket = await interaction.guild.create_text_channel(f"{emojiglobal}-{interaction.user.name}",overwrites=overwrites,category=categoria)
        await interaction.response.send_message(ephemeral=True,content=f"ticket criado \n{ticket.mention}")
        await ticket.send(embed=embedticket)

class DeleteTicket(discord.ui.View): # Botão deletar ticket
    def __init__(self):
        super().__init__(timeout=300)
        self.value = None

    @discord.ui.button(label="Encerrar Ticket", style=discord.ButtonStyle.red, emoji='❗')
    async def confirm(self, interaction: discord.Interaction, button: discord.ui.Button):
        self.value = True
        self.stop()
        mod = interaction.guild.get_role(id_staff)
        if interaction.permissions.kick_members:
            await interaction.channel.send("Seu atendimento está sendo encerrado")
            await interaction.response.defer()
            await interaction.followup.send("Seu Atendimento foi encerrado...")



class client(discord.Client): # PARTE QUE LIGA O BOT
    def __init__(self):
        super().__init__(intents=discord.Intents.default())
        self.synced = False
    async def setup_hook(self):
        self.add_view(DropdownView())
    async def on_ready(self):
        await self.wait_until_ready()
        if not self.synced: # Checar se os comandos slash foram sincronizados 
            await tree.sync(guild=discord.Object(id=1252105718203682847)) 
            self.synced = True
        print(f"Estou funcionando!")


aclient = client()
tree = app_commands.CommandTree(aclient)



@tree.command(guild=discord.Object(id=1252105718203682847),name = 'setup', description='Crie um Menu ticket')
@commands.has_permissions(manage_guild=True)
async def setup(interaction: discord.Interaction):
    embed1 = discord.Embed(
        colour= 25256,
        title= 'Suporte',
        description="> Entre em contato com o nosso suporte!"
    )
    if interaction.permissions.manage_guild:# Verifica a permissão de quem ta usando o comando, somente gerenciadores de servidor podem usar
        await interaction.response.send_message("Painel criado",ephemeral=True)# responde confirmando a criação da mensagem
        await interaction.channel.send(embed=embed1,view=DropdownView()) # envia a mensagem
    else:await interaction.response.send_message(mensagemerro,ephemeral=True)# retorna erro se a condição não for valida 













@tree.command(guild=discord.Object(id=1252105718203682847),name="fecharticket",description='Feche um atendimento atual.')
@commands.has_permissions(manage_guild=True)
async def _fecharticket(interaction: discord.Interaction):
    if interaction.permissions.kick_members:
        await interaction.response.send_message("Você deseja encerrar o seu atendimento?",view=DeleteTicket())
    else:
        await interaction.response.send_message(mensagemerro,ephemeral=True)


aclient.run(token_bot)   
Leave a Comment