From 6df23d84bc22236bec5b418e220d63f5663ffb22 Mon Sep 17 00:00:00 2001 From: DJj123dj <80536295+DJj123dj@users.noreply.github.com> Date: Sat, 2 Apr 2022 16:38:00 +0200 Subject: [PATCH] v1.3.2 This is the first stable version of open-ticket 1.3 --- README.md | 6 +- checker.js | 214 +++++++++++++++++++++++++++++++++++++ commands/database.js | 17 ++- commands/ticket.js | 4 +- commands/ticketExtra.js | 16 ++- commands/ticketSystem.js | 66 +++++++----- config.json | 6 +- documentation/CHANGELOG.md | 18 ++++ documentation/CONFIG.md | 9 +- index.js | 12 ++- package.json | 8 +- 11 files changed, 319 insertions(+), 57 deletions(-) create mode 100644 checker.js diff --git a/README.md b/README.md index 5ac3d88..6e321a3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # open-ticket [![discord](https://img.shields.io/badge/discord-join%20our%20server-5865F2.svg?style=flat-square&logo=discord)](https://discord.com/invite/26vT9wt3n3) -[![version](https://img.shields.io/badge/version-1.3.1%20stable-brightgreen.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/releases/tag/v1.3.1) +[![version](https://img.shields.io/badge/version-1.3.2%20stable-brightgreen.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/releases/tag/v1.3.2) [![npm](https://img.shields.io/badge/npm-external%20libraries%20needed-CB3837.svg?style=flat-square&logo=npm)](#packages) [![license](https://img.shields.io/badge/license-GPL%203.0-important.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) @@ -31,7 +31,7 @@ This is an open-source discord ticket bot, you can configure it and it comes wit You can clone or download this project. ### packages -- canvas => version `latest` +- chalk => version `latest` - discord.js => version `latest` - express => version `latest` - node-localstorage => version `latest` @@ -61,7 +61,7 @@ Hello everyone, soon open-ticket v1.4.0 will be launched, it contains a lot of n ## information -_v1.3.1_ +_v1.3.2_ changelog: [click here](./documentation/CHANGELOG.md) diff --git a/checker.js b/checker.js new file mode 100644 index 0000000..2d82854 --- /dev/null +++ b/checker.js @@ -0,0 +1,214 @@ +module.exports = async () => { + const chalk = await (await import("chalk")).default + const config = require("./config.json") + var errorList = [] + var isError = false + var warnList = [] + var isWarn = false + const createError = (message) => { + isError = true + errorList.push("open-ticket ERROR: "+message) + } + const createWarn = (message) => { + isWarn = true + warnList.push("open-ticket WARNING: "+message) + } + + //checker + + //token + if (config.auth_token.includes(" ")){ + createError("invalid token | there are spaces in your token!") + } + if (config.auth_token.length < 40){ + createError("invalid token | length not correct!") + } + + //color + if (!config.main_color.startsWith("#")){ + createError("color not detected | 'main_color' doesn't start with a '#'!") + } + if (config.main_color.length > 7 || config.main_color.length < 7){ + createError("color not detected | 'main_color' is not a valid hex color!") + } + + //admin + if (config.botperms_role.includes(" ")){ + createError("invalid role id | 'botperms_role' is not a valid role id!") + } + if (config.botperms_role.length > 20|| config.botperms_role.length < 16){ + createError("invalid role id | 'botperms_role' is not a valid role id!") + } + + //prefix + if (config.prefix == ""){ + createError("no prefix | 'prefix' is empty!") + } + if (config.prefix.length > 3){ + createWarn("long prefix | your prefix is a little bit long!") + } + + //status + if (config.status.enabled && (config.status.type != "PLAYING" && config.status.type != "LISTENING" && config.status.type != "WATCHING" && config.status.type != "CUSTOM")){ + createError("status error | 'status/type' is invalid!") + } + if (config.status.enabled && config.status.text.length < 1){ + createError("status error | 'status/text' must be at least 1 character long!") + } + + //ticketchannel + if (config.system.ticket_channel.includes(" ")){ + createWarn("invalid channel id | 'system/ticket_channel' is not a valid channel id!") + } + if (config.system.ticket_channel.length < 1){ + createWarn("no ticket channel | 'system/ticket_channel' is empty") + }else if (config.system.ticket_channel.length > 20|| config.system.ticket_channel.length < 16){ + createWarn("invalid channel id | 'system/ticket_channel' is not a valid channel id!") + } + + //maxticket + if (config.system.max_allowed_tickets < 1){ + createWarn("no tickets | if 'system/max_allowed_tickets' is under 1 you can't create any ticket") + } + + //category + if (config.system.enable_category == true && config.system.ticket_category.includes(" ")){ + createError("invalid category id | 'system/ticket_category' is not a valid category id!") + } + if (config.system.enable_category && config.system.ticket_category > 20 || config.system.ticket_category < 16){ + createError("invalid category id | 'system/ticket_category' is not a valid category id!") + } + + //everyoneaccess + if (config.system["has@everyoneaccess"] == true){ + createWarn("access | everyone has access to the tickets!") + } + + //memberrole + if (config.system.member_role.includes(" ")){ + createError("invalid role id | 'system/member_role' is not a valid role id!") + } + if (config.system.member_role.length > 20){ + createError("invalid role id | 'system/member_role' is not a valid role id!") + } + if (config.system.member_role == "" || config.system.member_role == " " || config.system.member_role == "false" || config.system.member_role == "null" || config.system.member_role == "0"){ + createWarn("no member role | 'system/member_role' is not valid so technically everyone can view a ticket!") + } + + //transcript + if (config.system.enable_transcript && config.system.transcript_channel.includes(" ")){ + createError("invalid channel id | 'system/transcript_channel' is not a valid channel id!") + } + if (config.system.enable_transcript && config.system.transcript_channel.length > 20 || config.system.transcript_channel.length < 16){ + createError("invalid channel id | 'system/transcript_channel' is not a valid channel id!") + } + + //messages + if (config.messages.general.nopermissions.length < 1){ + createError("no message | 'messages/general/nopermissions' is empty!") + } + if (config.messages.ticket.newTicketEmbed.length < 1){ + createError("no message | 'messages/ticket/newTicketEmbed' is empty!") + } + if (config.messages.dm.alreadyCreated.length < 1){ + createError("no message | 'messages/dm/alreadyCreated' is empty!") + } + if (config.messages.dm.newTicket.length < 1){ + createError("no message | 'messages/dm/newTicket' is empty!") + } + if (config.messages.dm.closeTicket.length < 1){ + createError("no message | 'messages/dm/closeTicket' is empty!") + } + + //layout + const checkLayout = (layout,layoutname,color,footer,thumbnail) => { + if (color){ + if (!layout.customColor.startsWith("#")){ + createError("color not detected | 'layout/"+layoutname+"/customColor' doesn't start with a '#'!") + } + if (layout.customColor.length > 7 || layout.customColor.length < 7){ + createError("color not detected | 'layout/"+layoutname+"/customColor' is not a valid hex color!") + } + } + if (footer){ + if (layout.footer.length < 1){ + createError("no footer | 'layout/"+layoutname+"/footer' doesn't have a footer!") + } + } + if (thumbnail){ + if (!layout.thumbnailURL.startsWith("https://") && !layout.thumbnailURL.startsWith("http://")){ + createError("thumbnail | the thumbnail url in 'layout/"+layoutname+"/thumbnailURL' is not a valid url!") + } + } + } + checkLayout(config.layout.ticketEmbed,"ticketEmbed",config.layout.ticketEmbed.customColorEnabled,config.layout.ticketEmbed.footerEnabled,config.layout.ticketEmbed.thumbnailEnabled) + checkLayout(config.layout.ticketMsg,"ticketMsg",config.layout.ticketMsg.customColorEnabled,config.layout.ticketMsg.footerEnabled,config.layout.ticketMsg.thumbnailEnabled) + checkLayout(config.layout.transcripts,"transcripts",config.layout.transcripts.customColorEnabled,false,config.layout.transcripts.thumbnailEnabled) + + const checkOption = (ticket,ticketname,enabled,urlmode) => { + if (enabled){ + if (ticket.icon.length > 0){ + const emojiRegex = /\p{Emoji}/u + const isEmoji = emojiRegex.test(ticket.icon) + if (isEmoji == false){ + createWarn("invalid emoji | 'options/"+ticketname+"/icon' is not a valid emoji (code can be wrong)") + } + } + if (ticket.description.length < 1){ + createWarn("no description | 'options/"+ticketname+"/description' is empty") + } + if (ticket.name.length < 1){ + createWarn("no description | 'options/"+ticketname+"/name' is empty") + } + if (ticket.channel_prefix.length < 1){ + createWarn("no description | 'options/"+ticketname+"/channel_prefix' is empty") + } + if (ticket.isURL == true && ticket.color != "red" && ticket.color != "blue" && ticket.color != "green" && ticket.color != "gray" && ticket.color != "none"){ + createWarn("invalid button color | 'options/"+ticketname+"/color' must be one of (red,green,blue,gray,none)") + } + + if (urlmode && (!ticket.url.startsWith("https://") && !ticket.url.startsWith("http://"))){ + createError("url invalid | the url in 'options/"+ticketname+"/url' is not a valid url!") + } + } + return + } + + checkOption(config.options.ticket1,"ticket1",config.options.ticket1.enabled,config.options.ticket1.isURL) + checkOption(config.options.ticket2,"ticket2",config.options.ticket2.enabled,config.options.ticket2.isURL) + checkOption(config.options.ticket3,"ticket3",config.options.ticket3.enabled,config.options.ticket3.isURL) + checkOption(config.options.ticket4,"ticket4",config.options.ticket4.enabled,config.options.ticket4.isURL) + checkOption(config.options.ticket5,"ticket5",config.options.ticket5.enabled,config.options.ticket5.isURL) + checkOption(config.options.ticket6,"ticket6",config.options.ticket6.enabled,config.options.ticket6.isURL) + + //the end + if (errorList.length > 0 || warnList.length > 0){ + console.log("REPORT:\n===========================") + } + warnList.forEach((w) => { + const splitw = w.split("'") + if (splitw.length > 1){ + var splitstring = chalk.yellow(splitw[0])+chalk.blue("'"+splitw[1]+"'")+chalk.yellow(splitw[2]) + }else {var splitstring = chalk.yellow(splitw[0])} + console.log(splitstring) + }) + errorList.forEach((e) => { + const splite = e.split("'") + if (splite.length > 1){ + var splitstring = chalk.red(splite[0])+chalk.blue("'"+splite[1]+"'")+chalk.red(splite[2]) + }else {var splitstring = chalk.red(splite[0])} + console.log(splitstring) + }) + if (isError){ + console.log("===========================") + console.log("=> "+chalk.bgRed("your bot doesn't work if you don't fix the above errors!")) + if (isWarn){ + console.log("\n=> "+chalk.bgYellow("if you ignore warns, some things may work differently than expected!")) + } + process.exit(0) + }else if (isWarn == true && isError == false){ + console.log("===========================") + console.log("=> "+chalk.bgYellow("if you ignore warns, some things may work differently than expected!")) + } + +} \ No newline at end of file diff --git a/commands/database.js b/commands/database.js index 82e27f5..271f232 100644 --- a/commands/database.js +++ b/commands/database.js @@ -7,16 +7,15 @@ const config = require("../config.json") module.exports = () => { client.on("messageCreate",(msg) => { var args = msg.content.split(" ") - if (args[0] == config.prefix+"resetdatabase"){ - if (msg.author.id == client.application.owner.id){ - const databaseEmbed = new discord.MessageEmbed() - .setColor(config.main_color) - .setTitle("How to reset the database:") - .setDescription("1: Go to the folder `./storage` in your bot's directory.\n\n2: If posible remove the folders\n`./tickets`, `./transcripts` & `./userTickets`\nfrom the folder `./storage`\n\n3: Restart the bot") - .setFooter({text:"if it doesn't work, create an issue on github or DM me on discord!"}) + if (args[0] == config.prefix+"resetdatabase" || args[0] == config.prefix+"resetdb"){ + const databaseEmbed = new discord.MessageEmbed() + .setColor(config.main_color) + .setTitle("How to reset the database:") + .setDescription("1: Go to the folder `./storage` in your bot's directory.\n\n2: If posible remove the folders\n`./tickets`, `./transcripts` & `./userTickets`\nfrom the folder `./storage`\n\n3: Restart the bot") + .setFooter({text:"if it doesn't work, create an issue on github or DM me on discord!"}) - msg.channel.send({embeds:[databaseEmbed]}) - } + msg.channel.send({embeds:[databaseEmbed]}) + if (config.logs){console.log("[command] "+config.prefix+"resetdatabase (user:"+msg.author.username+")")} } }) } \ No newline at end of file diff --git a/commands/ticket.js b/commands/ticket.js index 63a0480..2ae1b5a 100644 --- a/commands/ticket.js +++ b/commands/ticket.js @@ -59,7 +59,6 @@ module.exports = () => { ) } } - if (config.options.ticket2.enabled){ if (currentTicketButtons < 4){ var localTicketButton = ticketButton @@ -236,7 +235,8 @@ module.exports = () => { msg.channel.send({embeds:[ticketEmbed],components:embedComponents}) - + if (config.logs){console.log("[command] "+config.prefix+"ticket msg (user:"+msg.author.username+")")} + if (config.logs){console.log("[system] created ticket message")} } }) } \ No newline at end of file diff --git a/commands/ticketExtra.js b/commands/ticketExtra.js index 774056e..cfa84c7 100644 --- a/commands/ticketExtra.js +++ b/commands/ticketExtra.js @@ -14,13 +14,14 @@ module.exports = () => { .setTitle("Ticket commands") const prefix = config.prefix - TicketHelpMsg.setDescription("**Go to <#"+config.system.ticket_channel+"> to create a ticket!**\n\n`"+prefix+"ticket msg` ➜ _Admin command._\n`"+prefix+"ticket rename` ➜ _Rename a ticket (no spaces)._\n`"+prefix+"ticket close` ➜ _Close a ticket._\n`"+prefix+"ticket add ` ➜ _Add a user to the ticket._\n`"+prefix+"ticket remove ` ➜ _Remove a user from the ticket._\n`"+prefix+"resetdatabase` ➜ _Steps to reset the database._") + TicketHelpMsg.setDescription("**Go to <#"+config.system.ticket_channel+"> to create a ticket!**\n\n`"+prefix+"ticket msg` ➜ _Admin command._\n`"+prefix+"ticket rename` ➜ _Rename a ticket (no spaces)._\n`"+prefix+"ticket close` ➜ _Close a ticket._\n`"+prefix+"ticket add ` ➜ _Add a user to the ticket._\n`"+prefix+"ticket remove ` ➜ _Remove a user from the ticket._\n`"+prefix+"resetdatabase` ➜ _Steps to reset the database._\n`"+prefix+"resetdb` ➜ _Also database stuff._") if (config.credits){ TicketHelpMsg.setFooter({text:"Open-Ticket by DJdj Development | view on github for source code"}) } msg.channel.send({embeds:[TicketHelpMsg]}) + if (config.logs){console.log("[command] "+config.prefix+"ticket help (user:"+msg.author.username+")")} } }) @@ -43,7 +44,8 @@ module.exports = () => { .setDescription("Click [here]("+firstmsg.url+") to close this ticket.") .setTitle("Close this ticket:") - msg.channel.send({embeds:[CloseMsg]}) + msg.channel.send({embeds:[CloseMsg]}) + if (config.logs){console.log("[command] "+config.prefix+"ticket close (user:"+msg.author.username+")")} }) @@ -65,15 +67,18 @@ module.exports = () => { } var name = args[2] + var oldname = msg.channel.name msg.channel.messages.fetchPinned().then(msglist => { if (msglist.last().author.id == client.user.id){ msg.channel.send({content:"The name from the ticket is changed!"}).then(rmsg => { rmsg.channel.setName(name) + if (config.logs){console.log("[system] renamed a ticket (name:"+oldname+",newname:"+name+")")} }) }else{ msg.channel.send({content:"You are not in a ticket!"}) } }) + if (config.logs){console.log("[command] "+config.prefix+"ticket rename (user:"+msg.author.username+")")} } }) @@ -102,8 +107,11 @@ module.exports = () => { } msg.channel.permissionOverwrites.create(user.id, { VIEW_CHANNEL:true, ADD_REACTIONS:true,ATTACH_FILES:true, EMBED_LINKS:true, SEND_MESSAGES:true}) + if (config.logs){console.log("[system] added user to ticket (name:"+user.username+",ticket:"+msg.channel.name+")")} }) + var loguser = msg.mentions.users.first() + if (config.logs){console.log("[command] "+config.prefix+"ticket add "+loguser.username+" (user:"+msg.author.username+")")} } }) @@ -132,8 +140,12 @@ module.exports = () => { } msg.channel.permissionOverwrites.delete(user.id) + if (config.logs){console.log("[system] removed user from ticket (name:"+user.username+",ticket:"+msg.channel.name+")")} }) + + var loguser = msg.mentions.users.first() + if (config.logs){console.log("[command] "+config.prefix+"ticket remove "+loguser.username+" (user:"+msg.author.username+")")} } }) } \ No newline at end of file diff --git a/commands/ticketSystem.js b/commands/ticketSystem.js index c19bd56..6cf7ee4 100644 --- a/commands/ticketSystem.js +++ b/commands/ticketSystem.js @@ -47,16 +47,22 @@ module.exports = () => { //set ticketName if (interaction.customId == "newTicket1"){ var ticketName = config.options.ticket1.channel_prefix+ticketNumber + var logsname = config.options.ticket1.name }else if (interaction.customId == "newTicket2"){ var ticketName = config.options.ticket2.channel_prefix+ticketNumber + var logsname = config.options.ticket2.name }else if (interaction.customId == "newTicket3"){ var ticketName = config.options.ticket3.channel_prefix+ticketNumber + var logsname = config.options.ticket3.name }else if (interaction.customId == "newTicket4"){ var ticketName = config.options.ticket4.channel_prefix+ticketNumber + var logsname = config.options.ticket4.name }else if (interaction.customId == "newTicket5"){ var ticketName = config.options.ticket5.channel_prefix+ticketNumber + var logsname = config.options.ticket5.name }else if (interaction.customId == "newTicket6"){ var ticketName = config.options.ticket6.channel_prefix+ticketNumber + var logsname = config.options.ticket6.name } //set category @@ -64,6 +70,8 @@ module.exports = () => { var Category = config.system.ticket_category }else{var Category = null} + var permissionsArray = [] + //set everyone allowed if (config.system['has@everyoneaccess']){ var everyoneAllowPerms = ["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"] @@ -72,34 +80,35 @@ module.exports = () => { var everyoneAllowPerms = [] var everyoneDenyPerms = ["VIEW_CHANNEL"] } + permissionsArray.push({ + id:interaction.member.id, + type:"member", + allow:["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"] + }) + permissionsArray.push({ + id:config.botperms_role, + type:"role", + allow:["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"] + }) + permissionsArray.push({ + id:interaction.guild.id, + type:"role", + allow:everyoneAllowPerms, + deny:everyoneDenyPerms + }) + if (config.system.member_role == "" || config.system.member_role == " " || config.system.member_role == "false" || config.system.member_role == "null" || config.system.member_role == "0"){ + permissionsArray.push({ + id:config.system.member_role, + type:"role", + deny:["VIEW_CHANNEL"] + }) + } //create the channel interaction.guild.channels.create(ticketName,{ type:"GUILD_TEXT", parent:Category, - permissionOverwrites:[ - { - id:interaction.member.id, - type:"member", - allow:["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"] - }, - { - id:config.botperms_role, - type:"role", - allow:["ADD_REACTIONS","ATTACH_FILES","EMBED_LINKS","SEND_MESSAGES","VIEW_CHANNEL"] - }, - { - id:config.system.member_role, - type:"role", - deny:["VIEW_CHANNEL"] - }, - { - id:interaction.guild.id, - type:"role", - allow:everyoneAllowPerms, - deny:everyoneDenyPerms - } - ] + permissionOverwrites:permissionsArray }).then(tChannel => { userTicketStorage.setItem(tChannel.id,interaction.member.id) @@ -121,6 +130,7 @@ module.exports = () => { tChannel.send({content:"<@"+interaction.member.id+"> <@&"+config.botperms_role+">",embeds:[ticketEmbed],components:[closeButton]}).then(firstmsg => { firstmsg.pin() }) + if (config.logs){console.log("[system] created a new ticket (name:"+logsname+",user:"+interaction.user.username+")")} }) @@ -227,7 +237,7 @@ module.exports = () => { } var transcriptEmbed = new discord.MessageEmbed() .setColor(transcriptColor) - .setAuthor({text:interaction.channel.name + " - ticket created by "+getuserNAME}) + .setAuthor({name:interaction.channel.name + " - ticket created by "+getuserNAME}) .setTitle("There is a new transcript!") .setDescription(splittedTranscript[0]) .setFooter({text:"ticket closed by "+interaction.member.user.username}) @@ -236,7 +246,7 @@ module.exports = () => { if (transcript.length > 4000){ var transcriptEmbed2 = new discord.MessageEmbed() .setColor(transcriptColor) - .setAuthor({text:interaction.channel.name + " - ticket created by "+getuserNAME}) + .setAuthor({name:interaction.channel.name + " - ticket created by "+getuserNAME}) .setTitle("transcript #2") .setDescription(splittedTranscript[1]) .setFooter("ticket closed by "+interaction.member.user.username) @@ -244,7 +254,7 @@ module.exports = () => { var transcriptEmbed3 = new discord.MessageEmbed() .setColor(transcriptColor) - .setAuthor({text:interaction.channel.name + " - ticket created by "+getuserNAME}) + .setAuthor({name:interaction.channel.name + " - ticket created by "+getuserNAME}) .setTitle("transcript #3") .setDescription(splittedTranscript[1]) .setFooter({text:"ticket closed by "+interaction.member.user.username}) @@ -255,7 +265,7 @@ module.exports = () => { }else if (transcript.length > 2000){ var transcriptEmbed2 = new discord.MessageEmbed() .setColor(transcriptColor) - .setAuthor({text:interaction.channel.name + " - ticket created by "+getuserNAME}) + .setAuthor({name:interaction.channel.name + " - ticket created by "+getuserNAME}) .setTitle("transcript #2") .setDescription(splittedTranscript[1]) .setFooter({text:"ticket closed by "+interaction.member.user.username}) @@ -270,6 +280,8 @@ module.exports = () => { interaction.channel.delete() + if (config.logs){console.log("[system] closed a ticket (name:"+interaction.channel.name+",user:"+interaction.user.username+")")} + ticketStorage.setItem(getuserID,Number(ticketStorage.getItem(getuserID)) - 1) diff --git a/config.json b/config.json index 748fc6a..cea96cc 100644 --- a/config.json +++ b/config.json @@ -1,15 +1,15 @@ { - "server_name":"Ticket Bot", - "server_logo":"https://www.example.com/another-example/yourlogo.png", "bot_name":"Wumpus", "main_color":"#fffff", "auth_token":"the bot's auth token", "botperms_role":"the id from an admin role (they can do admin things with the bot)", "prefix":"!", + "logs":true, "credits":true, "status":{ - "type":"PLAYING | STREAMING | LISTENING | WATCHING | CUSTOM | COMPETING", + "enabled":true, + "type":"PLAYING | LISTENING | WATCHING | CUSTOM", "text":"!ticket" }, diff --git a/documentation/CHANGELOG.md b/documentation/CHANGELOG.md index f7223e9..28e9a93 100644 --- a/documentation/CHANGELOG.md +++ b/documentation/CHANGELOG.md @@ -1,5 +1,23 @@ # changelog +## v1.3.2 +### added: +- an alias for !resetdatabase: !resetdb +- you need the "chalk" library now! +- checker.js +- "enabled" option for status +- better console logs +- enable logs option to config +### fixed +- a bug that crashed the bot on using the command !resetdatabase +- "member_role" in config is optional but not recommended +- fixed crash on startup +- fixed bug where the bot crashes by using transcripts +- changed package.json +### removed +- "canvas" library is not longer required +- removed "server_icon" & "server_name" from config + ## v1.3.1 ### added: - Q&A in the README.md diff --git a/documentation/CONFIG.md b/documentation/CONFIG.md index edd7243..19da514 100644 --- a/documentation/CONFIG.md +++ b/documentation/CONFIG.md @@ -1,21 +1,22 @@ # config file [![discord](https://img.shields.io/badge/discord-join%20our%20server-5865F2.svg?style=flat-square&logo=discord)](https://discord.com/invite/26vT9wt3n3) -[![version](https://img.shields.io/badge/version-1.3.1%20stable-brightgreen.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/releases/tag/v1.3.1) +[![version](https://img.shields.io/badge/version-1.3.2%20stable-brightgreen.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/releases/tag/v1.3.2) [![npm](https://img.shields.io/badge/npm-external%20libraries%20needed-CB3837.svg?style=flat-square&logo=npm)](#packages) [![license](https://img.shields.io/badge/license-GPL%203.0-important.svg?style=flat-square)](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) In this file you find all the information about commands in the config.json file -- server_name ➜ the name of your server (optional) _**type: string**_ -- server_logo ➜ the logo of your server (optional) _**type: url**_ + - bot_name ➜ the name from the bot _**type: string**_ - main_color ➜ the color used in embeds _**type: hex color (#000000)**_ - auth_token ➜ your bot's token _**type: string**_ - botperms_role ➜ this role can do all admin commands from the bot _**type: discord role id**_ - prefix ➜ the prefix _**type: string**_ +- logs ➜ enable logs _**type: boolean**_ - credits ➜ disable the credits _**type: boolean**_ ## status: (the status from the bot) +- enabled ➜ enable status _**type: boolean**_ - type ➜ set the status type _**type: string (PLAYING | LISTENING | WATCHING | CUSTOM)** - text ➜ set the status text _**type: string**_ @@ -64,4 +65,4 @@ I didn't know that open-tickets was going to be so much used. I will be creating If you have an idea for new updates you can always say it in my discord server! -open-tickets v1.3.1 \ No newline at end of file +open-tickets v1.3.2 \ No newline at end of file diff --git a/index.js b/index.js index b09ef1a..90515b7 100644 --- a/index.js +++ b/index.js @@ -4,9 +4,15 @@ const intents = discord.Intents const client = new discord.Client({intents:[intents.FLAGS.GUILDS,intents.FLAGS.GUILD_MESSAGES,intents.FLAGS.GUILD_MEMBERS]}) exports.client = client -client.on('ready',() => { - console.log('ready') - client.user.setActivity(config.status.text,{type:config.status.type}) +require("./checker")() + +client.on('ready',async () => { + const chalk = await (await import("chalk")).default + console.log(chalk.green("open-ticket ready!")) + if (config.logs){chalk.white("\n\nlogs:\n============")} + if (config.status.enabled){ + client.user.setActivity(config.status.text,{type:config.status.type}) + } }) var storage = require('./storage/storage') diff --git a/package.json b/package.json index 0bafb3f..feaf758 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,16 @@ { - "name": "safemt-tickets", - "version": "1.0.0", + "name": "open-ticket", + "version": "1.3.2", "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", "scripts": { "start": "node index.js", "test": "echo \"Error: no test specified\" && exit 1" }, - "author": "", + "author": "DJdj Development", "license": "ISC", "dependencies": { - "canvas": "^2.8.0", + "chalk": "^5.0.1", "discord.js": "^13.6.0", "express": "^4.17.1", "node": "^16.10.0",