added close with reason
This commit is contained in:
@@ -7,7 +7,7 @@ make a ticket in our server to start!
|
|||||||
*if you translate, you will come in the credits*
|
*if you translate, you will come in the credits*
|
||||||
|
|
||||||
# open-ticket
|
# open-ticket
|
||||||
[](https://discord.com/invite/26vT9wt3n3) [](https://github.com/DJj123dj/open-ticket/releases/tag/v2.5.1) [](#packages) [](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE)
|
[](https://discord.com/invite/26vT9wt3n3) [](https://github.com/DJj123dj/open-ticket/releases/tag/v3.0.0) [](#packages) [](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE)
|
||||||
|
|
||||||
This is an open-source discord ticket bot, you can configure it and it comes with cool features like transcripts & custom options!
|
This is an open-source discord ticket bot, you can configure it and it comes with cool features like transcripts & custom options!
|
||||||
|
|
||||||
@@ -69,7 +69,7 @@ if there are any errors, you can open an **issue on github** or **contact me in
|
|||||||
|
|
||||||
### config
|
### config
|
||||||
Our config documentation is moved to another file:
|
Our config documentation is moved to another file:
|
||||||
[click here to view](https://www.github.com/DJj123dj/open-ticket/wiki/config-v2.5.1)
|
[click here to view](https://www.github.com/DJj123dj/open-ticket/wiki/config-v3.0.0)
|
||||||
|
|
||||||
### intents & permissions
|
### intents & permissions
|
||||||
In the discord developer portal in the "bot" panel you will find 3 switches under the title "Gateaway Intents". The following switches should always be turned on
|
In the discord developer portal in the "bot" panel you will find 3 switches under the title "Gateaway Intents". The following switches should always be turned on
|
||||||
@@ -81,7 +81,7 @@ You can also configure your own permissions
|
|||||||
|
|
||||||
## information
|
## information
|
||||||
|
|
||||||
_v2.5.1 stable_
|
_v3.0.0_
|
||||||
|
|
||||||
changelog: [click here](https://www.github.com/DJj123dj/open-ticket/wiki/Changelog)
|
changelog: [click here](https://www.github.com/DJj123dj/open-ticket/wiki/Changelog)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -79,7 +79,7 @@
|
|||||||
"description":"You can click one of the buttons below!",
|
"description":"You can click one of the buttons below!",
|
||||||
|
|
||||||
"enableFooter":false,
|
"enableFooter":false,
|
||||||
"footer":"Open Ticket v2.5.1 - I'm a footer!",
|
"footer":"Open Ticket v3.0.0 - I'm a footer!",
|
||||||
|
|
||||||
"enableThumbnail":false,
|
"enableThumbnail":false,
|
||||||
"thumbnail":"https://www.example.com/catmemes/cat.png",
|
"thumbnail":"https://www.example.com/catmemes/cat.png",
|
||||||
|
|||||||
+1
-1
@@ -260,7 +260,7 @@ exports.checker = async () => {
|
|||||||
//languagefile
|
//languagefile
|
||||||
checkType(config.languagefile,"string","languagefile")
|
checkType(config.languagefile,"string","languagefile")
|
||||||
const lf = config.languagefile
|
const lf = config.languagefile
|
||||||
if (!lf.startsWith("custom") && !lf.startsWith("english") && !lf.startsWith("dutch") && !lf.startsWith("romanian") && !lf.startsWith("german") && !lf.startsWith("arabic") && !lf.startsWith("spanish")){
|
if (!lf.startsWith("custom") && !lf.startsWith("english") && !lf.startsWith("dutch") && !lf.startsWith("romanian") && !lf.startsWith("german") && !lf.startsWith("arabic") && !lf.startsWith("spanish") && !lf.startsWith("portuguese")){
|
||||||
createError("'languagefile' | invalid language, more info in the wiki")
|
createError("'languagefile' | invalid language, more info in the wiki")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,14 @@ const arb = discord.ActionRowBuilder
|
|||||||
const bs = discord.ButtonStyle
|
const bs = discord.ButtonStyle
|
||||||
|
|
||||||
exports.closeVerifyBar = new arb()
|
exports.closeVerifyBar = new arb()
|
||||||
|
.addComponents(
|
||||||
|
new button()
|
||||||
|
.setCustomId("OTcloseTicketReason")
|
||||||
|
.setDisabled(false)
|
||||||
|
.setStyle(bs.Primary)
|
||||||
|
.setEmoji("💬")
|
||||||
|
.setLabel("close with reason")
|
||||||
|
)
|
||||||
.addComponents(
|
.addComponents(
|
||||||
new button()
|
new button()
|
||||||
.setCustomId("OTcloseTicketTrue")
|
.setCustomId("OTcloseTicketTrue")
|
||||||
|
|||||||
@@ -0,0 +1,100 @@
|
|||||||
|
const discord = require('discord.js')
|
||||||
|
const bot = require('../../../../index')
|
||||||
|
const client = bot.client
|
||||||
|
const config = bot.config
|
||||||
|
const l = bot.language
|
||||||
|
const log = bot.errorLog.log
|
||||||
|
|
||||||
|
const getconfigoptions = require("../../../getoptions")
|
||||||
|
const permissionChecker = require("../../../utils/permisssionChecker")
|
||||||
|
const storage = bot.storage
|
||||||
|
const hiddendata = bot.hiddenData
|
||||||
|
const embed = discord.EmbedBuilder
|
||||||
|
const mc = config.main_color
|
||||||
|
|
||||||
|
const button = discord.ButtonBuilder
|
||||||
|
const arb = discord.ActionRowBuilder
|
||||||
|
const bs = discord.ButtonStyle
|
||||||
|
|
||||||
|
const modal = discord.ModalBuilder
|
||||||
|
const tis = discord.TextInputStyle
|
||||||
|
const tib = discord.TextInputBuilder
|
||||||
|
|
||||||
|
module.exports = () => {
|
||||||
|
//theModal
|
||||||
|
const reasonModal = new modal()
|
||||||
|
.setTitle("close with reason")
|
||||||
|
.setCustomId("OTCloseReasonModal")
|
||||||
|
|
||||||
|
const reasonInput = new arb()
|
||||||
|
.addComponents([
|
||||||
|
new tib()
|
||||||
|
.setCustomId('OTreasonInput')
|
||||||
|
.setLabel("What is the reason for closing this ticket?")
|
||||||
|
.setStyle(tis.Short)
|
||||||
|
.setMaxLength(100)
|
||||||
|
.setRequired(true)
|
||||||
|
.setValue("")
|
||||||
|
.setPlaceholder("reason")
|
||||||
|
])
|
||||||
|
|
||||||
|
reasonModal.addComponents(reasonInput)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//CLOSE WITH REASON
|
||||||
|
var closeTicketButtonChecker = false
|
||||||
|
|
||||||
|
client.on("interactionCreate",async interaction => {
|
||||||
|
if (!interaction.isButton()) return
|
||||||
|
if (interaction.customId != "OTcloseTicketReason") return
|
||||||
|
|
||||||
|
if (closeTicketButtonChecker == true) return interaction.deferUpdate()
|
||||||
|
closeTicketButtonChecker = true
|
||||||
|
|
||||||
|
const firstcomponents = interaction.message.components
|
||||||
|
|
||||||
|
if (config.system.closeMode == "adminonly"){
|
||||||
|
if (!permissionChecker.command(interaction.user.id,interaction.guild.id)){
|
||||||
|
if (!permissionChecker.sendUserNoPerms(interaction.user)){
|
||||||
|
permissionChecker.sendChannelNoPerms(interaction.channel,interaction.user)
|
||||||
|
}
|
||||||
|
interaction.message.edit({components:[firstcomponents]})
|
||||||
|
closeTicketButtonChecker = false
|
||||||
|
return interaction.deferUpdate()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interaction.message.edit({components:[bot.buttons.close.openRowDisabled]})
|
||||||
|
await interaction.showModal(reasonModal)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
client.on("interactionCreate",async (interaction) => {
|
||||||
|
if (interaction.type != discord.InteractionType.ModalSubmit) return
|
||||||
|
if (interaction.customId != "OTCloseReasonModal") return
|
||||||
|
|
||||||
|
interaction.reply({embeds:[bot.embeds.commands.closeEmbed(interaction.user)],components:[bot.buttons.close.closeCommandRow]})
|
||||||
|
|
||||||
|
const reason = interaction.fields.getTextInputValue("OTreasonInput")
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {String}
|
||||||
|
*/
|
||||||
|
const name = interaction.channel.name
|
||||||
|
var prefix = ""
|
||||||
|
const tickets = config.options
|
||||||
|
tickets.forEach((ticket) => {
|
||||||
|
if (name.startsWith(ticket.channelprefix)){
|
||||||
|
prefix = ticket.channelprefix
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
//interaction.channel.send({embeds:[bot.embeds.commands.closeEmbed(interaction.user)],components:[bot.buttons.close.closeCommandRow]})
|
||||||
|
await require("../../../ticketCloser").NEWcloseTicket(interaction.member,interaction.channel,prefix,"close",reason,true)
|
||||||
|
closeTicketButtonChecker = false
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -7,4 +7,5 @@ module.exports = () => {
|
|||||||
require("./accepted/closing")()
|
require("./accepted/closing")()
|
||||||
require("./accepted/reopening")()
|
require("./accepted/reopening")()
|
||||||
require("./accepted/deleting")()
|
require("./accepted/deleting")()
|
||||||
|
require("./accepted/closingReason")()
|
||||||
}
|
}
|
||||||
@@ -14,6 +14,8 @@ else if (config.languagefile.startsWith("french")) localLanguage = require("../l
|
|||||||
else if (config.languagefile.startsWith("romanian")) localLanguage = require("../language/romanian.json")
|
else if (config.languagefile.startsWith("romanian")) localLanguage = require("../language/romanian.json")
|
||||||
else if (config.languagefile.startsWith("arabic")) localLanguage = require("../language/arabic.json")
|
else if (config.languagefile.startsWith("arabic")) localLanguage = require("../language/arabic.json")
|
||||||
else if (config.languagefile.startsWith("spanish")) localLanguage = require("../language/spanish.json")
|
else if (config.languagefile.startsWith("spanish")) localLanguage = require("../language/spanish.json")
|
||||||
|
else if (config.languagefile.startsWith("portuguese")) localLanguage = require("../language/portuguese.json")
|
||||||
|
|
||||||
|
|
||||||
const errorLog = async () => {
|
const errorLog = async () => {
|
||||||
const chalk = await (await import("chalk")).default
|
const chalk = await (await import("chalk")).default
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
{
|
||||||
|
"errors":{
|
||||||
|
"missingArgsTitle":"Argumentos inválidos!",
|
||||||
|
"missingArgsDescription":"Argumento ausente",
|
||||||
|
"noPermsTitle":"Sem permissões!",
|
||||||
|
"noPermsDescription":"Você precisa da permissão `ADMINISTRATOR` ou estar na lista de funções permitidas!",
|
||||||
|
"noPermsDelete":"Somente administradores podem deletar um ticket!",
|
||||||
|
"chooseFromListTitle":"ID inválido",
|
||||||
|
"chooseFromListDescription":"Escolha um dos IDs abaixo:",
|
||||||
|
"boterror":"Erro de bot!",
|
||||||
|
"notInTicketTitle":"Você não está em um ticket!",
|
||||||
|
"notInTicketDescription":"Este comando não funciona fora dos tickets!",
|
||||||
|
"ticketDoesntExist":"Este ticket não existe mais!",
|
||||||
|
"roleDoesntExist":"Esta função não existe mais!",
|
||||||
|
"anotherOption":"Esta opção não é um ticket, mas sim outro tipo!",
|
||||||
|
"maxAmountTitle":"Quantidade máxima atingida!",
|
||||||
|
"maxAmountDescription":"Você atingiu o número máximo de tickets permitidos!\nEntão você não pode criar um novo!",
|
||||||
|
"somethingWentWrong":"**Algo deu errado!**\nPor favor, tente novamente outra vez!",
|
||||||
|
"somethingWentWrongTranscript":"Algo deu errado ao fazer a transcrição!**\nPor favor, tente novamente outra vez!"
|
||||||
|
},
|
||||||
|
"commands":{
|
||||||
|
"userAddedTitle":"Adicionado {0} a este ticket!",
|
||||||
|
"userRemovedTitle":"Removido {0} deste ticket!",
|
||||||
|
"renameTitle":"Mudou o nome para {0}!",
|
||||||
|
"closeTitle":"Fechado este ticket!",
|
||||||
|
"deleteTitle":"Excluindo este ticket...",
|
||||||
|
"reopenTitle":"Reabriu este ticket!",
|
||||||
|
|
||||||
|
"ticketWarning":"A incorporação está na mensagem abaixo!",
|
||||||
|
"maxTicketWarning":"**Cuidado:** _Você só pode criar {0} tickets) de cada vez!!_"
|
||||||
|
},
|
||||||
|
"helpMenu":{
|
||||||
|
"title":"Comandos Disponíveis:",
|
||||||
|
"header1":"**Vá para {0} para criar um ticket!**\n\n",
|
||||||
|
"header2":"**Execute o comando `/new` ou `/ticket` para criar um ticket!**\n\n",
|
||||||
|
|
||||||
|
"msgCmd":"Gerar uma incorporação com botões. (somente administradores)",
|
||||||
|
"renameCmd":"Renomear um ticket. (sem espaços)",
|
||||||
|
"closeCmd":"Fechar um ticket.",
|
||||||
|
"deleteCmd":"Excluir um ticket.",
|
||||||
|
"addCmd":"Adicionar um usuário ao ticket.",
|
||||||
|
"removeCmd":"Remover um usuário do ticket.",
|
||||||
|
"reopenCmd":"Reabra um ticket depois que ele foi fechado."
|
||||||
|
},
|
||||||
|
"buttons":{
|
||||||
|
"close":"Fechar Ticket",
|
||||||
|
"delete":"Excluir Ticket",
|
||||||
|
"reopen":"Reabrir Ticket",
|
||||||
|
"sendTranscript":"Transcrição"
|
||||||
|
},
|
||||||
|
"messages":{
|
||||||
|
"reopenTitle":"Reabriu este ticket!",
|
||||||
|
"reopenDescription":"Sinta-se à vontade para falar novamente!",
|
||||||
|
"closedTitle":"Fechado este ticket!",
|
||||||
|
"closedDescription":"Somente administradores podem falar neste ticket agora!\n\n*Clique no botão abaixo para excluir ou reabrir este ticket!*",
|
||||||
|
"createdTitle":"Ticket criado!",
|
||||||
|
"createdDescription":"Seu ticket foi criado, você pode detectá-lo com um ping!",
|
||||||
|
|
||||||
|
"newTicketDmTitle":"Novo Ticket!",
|
||||||
|
"closedTicketDmTitle":"Ticket fechado!",
|
||||||
|
"deletedTicketDmTitle":"Ticket excluído!",
|
||||||
|
"closedTicketDmDescription":"Seu ticket está fechado!",
|
||||||
|
"deletedTicketDmDescription":"Seu bilhete foi excluído!",
|
||||||
|
"reopenTicketDmTitle":"Ticket reaberto!",
|
||||||
|
"reopenTicketDmDescription":"Seu ticket foi reaberto!",
|
||||||
|
"newTranscriptTitle":"Uma nova transcrição está aqui!",
|
||||||
|
"hereIsTheTranscript":"Aqui está a transcrição:",
|
||||||
|
|
||||||
|
"chooseCategory":"Escolha a categoria:",
|
||||||
|
"gettingdeleted":"Ticket está sendo deletado...",
|
||||||
|
|
||||||
|
"none":"none",
|
||||||
|
"reason":"reason"
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "open-ticket",
|
"name": "open-ticket",
|
||||||
"version": "2.5.1",
|
"version": "3.0.0",
|
||||||
"description": "This is an open-source discord ticket bot, you can configure it and it comes with cool features like a transcript.",
|
"description": "This is an open-source discord ticket bot, you can configure it and it comes with cool features like a transcript.",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
Reference in New Issue
Block a user