[text] Dragona

Viewer

  1. import discord
  2. from discord import app_commands
  3. from discord.ext import commands
  4.  
  5. id_do_servidor = 973980633837731850
  6. id_cargo_atendente = 973980633837731851
  7. token_bot = "OTg1MjExNDE4OTk3NTcxNjA0.GmJVIf.fkhQapsf3CiwMN-fQtUp16dzyYYfwkn6z0Ucy8"
  8.  
  9. class Dropdown(discord.ui.Select):
  10.     def __init__(self):
  11.         options = [
  12.             discord.SelectOption(value="Suporte|Support",label="Suporte|Support", emoji="💡"),
  13.             discord.SelectOption(value="Comprar|Buy",label="Comprar|Buy", emoji="🍼"),
  14.         ]
  15.         super().__init__(
  16.             placeholder="Selecione uma opção a baixo...",
  17.             min_values=1,
  18.             max_values=1,
  19.             options=options,
  20.             custom_id="persistent_view:dropdown_help"
  21.         )
  22.     async def callback(self, interaction: discord.Interaction):
  23.         if self.values[0] == "Suporte|Support":
  24.             await interaction.response.send_message("Clique abaixo para criar um ticket",ephemeral=True,view=CreateTicket())
  25.         elif self.values[0] == "Comprar|Buy":
  26.             await interaction.response.send_message("Clique abaixo para criar um ticket",ephemeral=True,view=CreateTicket())
  27.  
  28. class DropdownView(discord.ui.View):
  29.     def __init__(self):
  30.         super().__init__(timeout=None)
  31.  
  32.         self.add_item(Dropdown())
  33.  
  34. class CreateTicket(discord.ui.View):
  35.     def __init__(self):
  36.         super().__init__(timeout=300)
  37.         self.value=None
  38.  
  39.     @discord.ui.button(label="Abrir Ticket",style=discord.ButtonStyle.blurple,emoji="➕")
  40.     async def confirm(self,interaction: discord.Interaction, button: discord.ui.Button):
  41.         self.value = True
  42.         self.stop()
  43.  
  44.         ticket = None
  45.         for thread in interaction.channel.threads:
  46.             if f"{interaction.user.id}" in thread.name:
  47.                 if thread.archived:
  48.                     ticket = thread
  49.                 else:
  50.                     await interaction.response.send_message(ephemeral=True,content=f"Você já tem um atendimento em andamento!")
  51.                     return
  52.         
  53.         if ticket != None:
  54.             await ticket.unarchive()
  55.             await ticket.edit(name=f"{interaction.user.name} ({interaction.user.id})",auto_archive_duration=10080,invitable=False)
  56.         else:
  57.             ticket = await interaction.channel.create_thread(name=f"{interaction.user.name} ({interaction.user.id})",auto_archive_duration=10080)#,type=discord.ChannelType.private_thread)
  58.             await ticket.edit(invitable=False)
  59.  
  60.         await interaction.response.send_message(ephemeral=True,content=f"Criei um ticket especial para você! {ticket.mention}")
  61.         await ticket.send(f"🍼  **|** {interaction.user.mention} ticket criado! Envie todas as informações possíveis sobre seu caso e aguarde até que um atendente responda.\n\nApós a sua questão ser sanada, você pode usar `/fecharticket` para encerrar o atendimento!\n\n<@973980633837731851>")
  62.  
  63.  
  64.  
  65. class client(discord.Client):
  66.     def __init__(self):
  67.         super().__init__(intents=discord.Intents.default())
  68.         self.synced = False #Nós usamos isso para o bot não sincronizar os comandos mais de uma vez
  69.  
  70.     async def setup_hook(self) -> None:
  71.         self.add_view(DropdownView())
  72.  
  73.     async def on_ready(self):
  74.         await self.wait_until_ready()
  75.         if not self.synced: #Checar se os comandos slash foram sincronizados 
  76.             await tree.sync(guild = discord.Object(id=id_do_servidor)) # Você também pode deixar o id do servidor em branco para aplicar em todos servidores, mas isso fará com que demore de 1~24 horas para funcionar.
  77.             self.synced = True
  78.         print(f"Entramos como {self.user}.") 
  79.  
  80. aclient = client()
  81.  
  82. tree = app_commands.CommandTree(aclient)
  83.  
  84. @tree.command(guild = discord.Object(id=id_do_servidor), name = 'setup', description='Setup')
  85. @commands.has_permissions(manage_guild=True)
  86. async def setup(interaction: discord.Interaction):
  87.     await interaction.response.send_message("*Tem alguma Duvida?* ou *Deseja comprar?* **Abra Ticket**",view=DropdownView()) 
  88.  
  89.  
  90. @tree.command(guild = discord.Object(id=id_do_servidor), name="fecharticket",description='Feche um atendimento atual.')
  91. async def _fecharticket(interaction: discord.Interaction):
  92.     mod = interaction.guild.get_role(973980633837731851)
  93.     if str(interaction.user.id) in interaction.channel.name or mod in interaction.author.roles:
  94.         await interaction.response.send_message(f"O ticket foi arquivado por {interaction.user.mention}, obrigado por entrar em contato!")
  95.         await interaction.channel.edit(archived=True)
  96.     else:
  97.         await interaction.response.send_message("Isso não pode ser feito aqui *Planet Baby Stor* não irá gostar disso...")
  98.  
  99. aclient.run(token_bot)

Editor

You can edit this paste and save as new:


File Description
  • Dragona
  • Paste Code
  • 30 Jun-2022
  • 4.7 Kb
You can Share it: