Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ticket_System

Ticket System for Discord, with Transcript site

======================= PT-BR =======================

Sistema de Tickets para Discord

Sistema de tickets desenvolvido por mim para comercialização com clientes donos de cidades de fivem para atendimento a usuarios.

Tecnologias/Bibliotecas Utilizadas:

  • Cogs
  • Flask-API (Flask / Flask_Cors)
  • Banco de Dados DuckDB
  • Discord / Discord.ext / Discord.ui

Arquivo Config: DB_TICKETS = "tickets.duckdb" (Nome do Banco de Dados)

ARQUIVO_JSON = "tickets.json" (Nome do json para salvar o ID da mensagem para abrir os tickets e manter a persistencia)

ID_DEVOLUCAO = int (Canal aonde Irá uma Embed com informações para realizar devolução de itens)

CARGOS_SLASH = [int] (Quem irá poder aceitrar as devoluções)

CANAL_TICKET = int (Canal de Solicitação de Abertura de um Ticket)

LOG_TICKET = int (Canal que irá ser enviado a log do ticket so ser fechado)

SUPORTE_ID = int (Categoria de onde o Ticket Ficará aberto)

Fluxo de Funcionamento:

Após Utilizar o comando !setup_tickets no CANAL_TICKET ele irá enviar uma embed com um botão com as opções de tickets que o usuario poderá solicitar, automaticamente o sistema ja salva o ID da mensagem em ARQUIVO_JSON para toda vez que o bot for reiniciado ele manter a persistencia e não precisar mandar novamente o comando !setup_tickets.

Ao clicar em abrir ticket ele abre uma lista com as opções de tickets que podem ser abertos, e ao selecionar uma ele manda uma nova embed efemera com um botão para ir para o ticket.

image image image image

Para abrir o ticket ele pega as permissoes da categoria e adiciona apenas o criador do ticket para poder enviar mensagem tambem, o nome do canal e gerado aleatoriamente com 6 caracteres podendo eles serem mesclados com numero e letras, e manda uma embed de boas vindas com os botoes de ação para gerenciamento.

image

Botoes:

  • Cancelar Ticket: Somente quem abriu o ticket pode utilizar ele (essa informação e salva no banco de dados), Então caso alguem que foi adicionado queira fexhar ele não consegue.
  • Poke: É enviado uma mensagem no PV de quem criou o ticket com uma mensagem de saudação e informando quem chamou a atenção dele e em qual canal está sendo solicitado uma resposta do mesmo, junto com um atalho e uma marcação do canal para facilitar o acesso ao ticket.
image image
  • Ações Ticket: Ele envia uma mensagem efemera com uma lista com as opções de renomear ticket e transferir de categoria.
image image
  • Devolução: Abre um Formulario para preencher o ID de quem receberá os itens de volta e os itens a seren devolvidos, apos envio será enviado uma enbed no canal ID_DEVOLUCAO com os botão de aprovar ou negar, ao ter a interação os botão são excluidos e a embed é atualizada com o nome de quem aprovou ou negou, essas informações são salvas na base de dados para manter a persistencia.
image image image image
  • Adicionar Membro: Caso tenha a necessidade de adicionar outro jogador e só pesquisar o nome dele do discord no canal chat-geral por exemplo e apertar o botão que ele manda a instrução para marcar a pessoa e enviar a mensagem, se em 15 segundos ninguem for marcado ele desativa o monitoramento, caso voce mande a mensagem com quem voce quer adicionar ele informa que o usuario marcado foi adicionado.
image image
  • Remover Membro: Igual o Adicionar porem so funciona com quem esta no ticket e não tem cargo para visualizar
image
  • Adicionar Observação: A proxima mensagem que for digitada no chat será salva como uma observação no banco de dados
image
  • Fechar ticket: Somente quem tem um cargo em CARGOS_SLASH pode fechar o ticket, ao clicar ele informa no canal que o ticket foi fechado e em 10 Segundos o canal e excluido, alem disso ele manda uma embed no privado de quem abriu o ticket e uma no LOG_TICKET.
image image image
  • Assumir Ticket: Quem irá resolver o ticket assume para ele o ticket
image
  • Chamada de Voz: Caso seja necessario conversar com alguem sobre o ticket ele cria um canal de voz que se ele ficar 5 minutos sem ninguem ele exclui automaticamente.
image image

Gerenciamento apos o fechamento:

  • No LOG_TICKET será enviado o identificador e o token do ticket, o identificador e para achar ele futuramente no servidor e o token para criar a rota do transcript na base de dados, assim como quem fechou, quem abriu e a hora e data que foi aberto, assim como o transcript original.
  • Para ver o ticket em um site foi utilizado a hospedagem da discloud, e a rota para acessar o ticket ficou "/api/ticket/<token>" assim como a rota para conseguir o transcript "SELECT html_content FROM ticket_html WHERE token = ?"
image

"Access Ticket Model"

O Arquivo main.py ficou com 111 linhas por conta das logs, ja o cogs\tickets.py ficou com 1686 linhas.

About

Ticket System for Discord, with Transcript site

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages