diff --git a/.github/CONTRIBUTORS.json b/.github/CONTRIBUTORS.json new file mode 100644 index 0000000..2803e3e --- /dev/null +++ b/.github/CONTRIBUTORS.json @@ -0,0 +1,91 @@ +{ + "_INFO":"This document contains all Open Ticket contributors.", + "SPONSOR_TEMPLATE":{ + "name":"INSERT_NAME", + "pictureUrl":"INSERT_PICTURE_URL", + "profileUrl":"INSERT_PROFILE_URL", + "sectionId":"INSERT_ID" + }, + "SECTION_TEMPLATE":{ + "name":"INSERT_NAME", + "id":"INSERT_ID", + "pfpSize":50, + "pfpColumns":5, + "withNames":true + }, + "sections":[ + { + "name":"🛠️ Contributors", + "id":"contributor", + "pfpSize":100, + "pfpColumns":8, + "withNames":true + }, + { + "name":"📞 Discord Support", + "id":"support", + "pfpSize":100, + "pfpColumns":8, + "withNames":true + }, + { + "name":"🧩 Plugin Developers", + "id":"plugin-dev", + "pfpSize":100, + "pfpColumns":8, + "withNames":true + }, + { + "name":"💬 Translators", + "id":"translator", + "pfpSize":100, + "pfpColumns":8, + "withNames":true + } + ], + "contributors":[ + {"sectionId":"contributor","name":"DJj123dj","pictureUrl":"https://github.com/DJj123dj.png","profileUrl":"https://github.com/DJj123dj"}, + {"sectionId":"contributor","name":"guillee3","pictureUrl":"https://github.com/guillee3.png","profileUrl":"https://github.com/guillee3"}, + {"sectionId":"contributor","name":"SKaranjaN","pictureUrl":"https://github.com/SKaranjaN.png","profileUrl":"https://github.com/SKaranjaN"}, + {"sectionId":"contributor","name":"Ashish5180","pictureUrl":"https://github.com/Ashish5180.png","profileUrl":"https://github.com/Ashish5180"}, + {"sectionId":"contributor","name":"duboiss","pictureUrl":"https://github.com/duboiss.png","profileUrl":"https://github.com/duboiss"}, + {"sectionId":"contributor","name":"sdehaarte","pictureUrl":"https://github.com/sdehaarte.png","profileUrl":"https://github.com/sdehaarte"}, + {"sectionId":"support","name":"smetsliam","pictureUrl":"https://github.com/smetsliam.png","profileUrl":"https://github.com/smetsliam"}, + {"sectionId":"support","name":"Sank34","pictureUrl":"https://github.com/Sank34.png","profileUrl":"https://github.com/Sank34"}, + {"sectionId":"support","name":"FrankVissers","pictureUrl":"https://github.com/FrankVissers.png","profileUrl":"https://github.com/FrankVissers"}, + {"sectionId":"plugin-dev","name":"Rapid-Fast","pictureUrl":"https://github.com/Rapid-Fast.png","profileUrl":"https://github.com/Rapid-Fast"}, + {"sectionId":"plugin-dev","name":"NotMukundOP","pictureUrl":"https://github.com/NotMukundOP.png","profileUrl":"https://github.com/NotMukundOP"}, + {"sectionId":"plugin-dev","name":"Imperatorix17","pictureUrl":"https://github.com/imperatorix17.png","profileUrl":"https://github.com/imperatorix17"}, + {"sectionId":"plugin-dev","name":"DanoGlez","pictureUrl":"https://github.com/DanoGlez.png","profileUrl":"https://github.com/DanoGlez"}, + {"sectionId":"plugin-dev","name":"yowsef","pictureUrl":"https://github.com/Yow-sef.png","profileUrl":"https://github.com/Yow-sef"}, + {"sectionId":"plugin-dev","name":"challenger_nova","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""}, + {"sectionId":"translator","name":"HanumeshGupta","pictureUrl":"https://github.com/HanumeshGupta.png","profileUrl":"https://github.com/HanumeshGupta"}, + {"sectionId":"translator","name":"benzorich","pictureUrl":"https://github.com/benzorich.png","profileUrl":"https://github.com/benzorich"}, + {"sectionId":"translator","name":"Reddishye","pictureUrl":"https://github.com/Reddishye.png","profileUrl":"https://github.com/Reddishye"}, + {"sectionId":"translator","name":"josuens","pictureUrl":"https://github.com/josuens.png","profileUrl":"https://github.com/josuens"}, + {"sectionId":"translator","name":"quiradon","pictureUrl":"https://github.com/quiradon.png","profileUrl":"https://github.com/quiradon"}, + {"sectionId":"translator","name":"Imperatorix17","pictureUrl":"https://github.com/imperatorix17.png","profileUrl":"https://github.com/imperatorix17"}, + {"sectionId":"translator","name":"NoOneNook","pictureUrl":"https://github.com/NoOneNook.png","profileUrl":"https://github.com/NoOneNook"}, + {"sectionId":"translator","name":"guillee3","pictureUrl":"https://github.com/guillee3.png","profileUrl":"https://github.com/guillee3"}, + {"sectionId":"translator","name":"Mods HD","pictureUrl":"https://github.com/mods-hd.png","profileUrl":"https://github.com/mods-hd"}, + {"sectionId":"translator","name":"anderskiy","pictureUrl":"https://github.com/anderskiy.png","profileUrl":"https://github.com/anderskiy"}, + {"sectionId":"translator","name":"SpyEye2","pictureUrl":"https://github.com/SpyEye2.png","profileUrl":"https://github.com/SpyEye2"}, + {"sectionId":"translator","name":"Sank34","pictureUrl":"https://github.com/Sank34.png","profileUrl":"https://github.com/Sank34"}, + {"sectionId":"translator","name":"thegamer5095","pictureUrl":"https://github.com/thegamer5095.png","profileUrl":"https://github.com/thegamer5095"}, + {"sectionId":"translator","name":"danoglez","pictureUrl":"https://github.com/danoglez.png","profileUrl":"https://github.com/danoglez"}, + {"sectionId":"translator","name":"zhavis","pictureUrl":"https://github.com/zhavis.png","profileUrl":"https://github.com/zhavis"}, + {"sectionId":"translator","name":"yuuslokrobjakkroval","pictureUrl":"https://github.com/yuuslokrobjakkroval.png","profileUrl":"https://github.com/yuuslokrobjakkroval"}, + {"sectionId":"translator","name":"imLudwig","pictureUrl":"https://github.com/imLudwig.png","profileUrl":"https://github.com/imLudwig"}, + {"sectionId":"translator","name":"iamnotmega","pictureUrl":"https://github.com/iamnotmega.png","profileUrl":"https://github.com/iamnotmega"}, + {"sectionId":"translator","name":"Ronalds13424","pictureUrl":"https://github.com/Ronalds13424.png","profileUrl":"https://github.com/Ronalds13424"}, + {"sectionId":"translator","name":"dysashop","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""}, + {"sectionId":"translator","name":"fraden1mvp.","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""}, + {"sectionId":"translator","name":"palestinian","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""}, + {"sectionId":"translator","name":"challenger_nova","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""}, + {"sectionId":"translator","name":"erxg","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""}, + {"sectionId":"translator","name":"tsgindrius","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""}, + {"sectionId":"translator","name":"kornel0706","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""}, + {"sectionId":"translator","name":"me.october","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""}, + {"sectionId":"translator","name":"ngocdiep2006","pictureUrl":"https://apis.dj-dj.be/cdn/openticket/default-avatar.png","profileUrl":""} + ] +} \ No newline at end of file diff --git a/.github/CONTRIBUTORS.svg b/.github/CONTRIBUTORS.svg new file mode 100644 index 0000000..647121e --- /dev/null +++ b/.github/CONTRIBUTORS.svg @@ -0,0 +1,276 @@ + + + 🛠️ Contributors + + + + + DJj123dj + + + + + + guillee3 + + + + + + SKaranjaN + + + + + + Ashish5180 + + + + + + duboiss + + + + + + sdehaarte + 📞 Discord Support + + + + + smetsliam + + + + + + Sank34 + + + + + + FrankVissers + 🧩 Plugin Developers + + + + + Rapid-Fast + + + + + + NotMukundOP + + + + + + Imperatorix17 + + + + + + DanoGlez + + + + + + yowsef + + + + + + challenger_nova + 💬 Translators + + + + + HanumeshGupta + + + + + + benzorich + + + + + + Reddishye + + + + + + josuens + + + + + + quiradon + + + + + + Imperatorix17 + + + + + + NoOneNook + + + + + + guillee3 + + + + + + Mods HD + + + + + + anderskiy + + + + + + SpyEye2 + + + + + + Sank34 + + + + + + thegamer5095 + + + + + + danoglez + + + + + + zhavis + + + + + + yuuslokrobjakkroval + + + + + + imLudwig + + + + + + iamnotmega + + + + + + Ronalds13424 + + + + + + dysashop + + + + + + fraden1mvp. + + + + + + palestinian + + + + + + challenger_nova + + + + + + erxg + + + + + + tsgindrius + + + + + + kornel0706 + + + + + + me.october + + + + + + ngocdiep2006 + + \ No newline at end of file diff --git a/.gitignore b/.gitignore index 6363a68..c6c9fe1 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ otdebug.txt .backup/* .tools/* !.tools/createSponsors.ts +!.tools/createContributors.ts !.tools/mergeTranslations.ts !.tools/docker-compose.yml !.tools/dockerfile \ No newline at end of file diff --git a/.tools/createContributors.ts b/.tools/createContributors.ts new file mode 100644 index 0000000..dd5985f --- /dev/null +++ b/.tools/createContributors.ts @@ -0,0 +1,130 @@ +/// +import fs from "fs" +import path from "path" +import crypto from "crypto" + +const contributorData: {contributors:Contributor[],sections:Section[]} = JSON.parse(fs.readFileSync(path.join(process.cwd(),"./.github/CONTRIBUTORS.json")).toString()) + +//CONSTANTS +const CORNER_RADIUS = 10 +const SPACE_MULTIPLIER = 1.2 +const SVG_WIDTH = 1000 + +//TYPES +interface Contributor { + name:string, + pictureUrl:string, + profileUrl:string, + sectionId:string +} +interface Section { + name:string, + id:string, + pfpSize:number, + pfpColumns:number, + withNames:boolean +} + + +//FUNCTIONS +async function downloadPfpToBase64URL(url:string){ + const res = await fetch(url,{method:"GET"}) + if (!res.ok) return null + const buffer = Buffer.from(await res.arrayBuffer()) + console.log("Downloaded picture URL:",url) + return "data:image/png;base64,"+buffer.toString("base64") +} + +function createTitle(yPos:number,name:string){ + return `${name}` +} + +async function createPfp(yPos:number,xPos:number,size:number,contributor:Contributor,withNames:boolean){ + const randomId = crypto.randomBytes(8).toString("hex") + const nameElement = (withNames) ? `${contributor.name}` : "" + + return (` + + + + + ${nameElement} + `) +} + +async function generateSection(yPos:number,section:Section,contributors:Contributor[]){ + let sectionHtml: string = "" + sectionHtml += createTitle(yPos,section.name) + const nameOffset = (section.withNames) ? 20 : 0 + + //divide contributors in rows + const groupedContributors: Contributor[][] = [] + let currentGroup: Contributor[] = [] + for (const contributor of contributors){ + currentGroup.push(contributor) + if (currentGroup.length == section.pfpColumns){ + groupedContributors.push(currentGroup) + currentGroup = [] + } + } + if (currentGroup.length > 0) groupedContributors.push(currentGroup) + + let y = 0 + for (const contributorGroup of groupedContributors){ + let x = 0 + for (const contributor of contributorGroup){ + const pfpYPos = 40 + yPos + (y * ((section.pfpSize * SPACE_MULTIPLIER) + nameOffset)) + const pfpXPos = 20 + (x * section.pfpSize * SPACE_MULTIPLIER) + sectionHtml += await createPfp(pfpYPos,pfpXPos,section.pfpSize,contributor,section.withNames) + x++ + } + y++ + } + + let sectionHeight: number = 40 + (y * ((section.pfpSize * SPACE_MULTIPLIER) + nameOffset)) + return {sectionHtml,sectionHeight} +} + +async function generateSections(sections:Section[],contributors:Contributor[]){ + let finalHeight: number = 10 + let finalHtml: string = "" + for (const section of sections){ + const sectionContributors = contributors.filter((s) => s.sectionId === section.id) + if (sectionContributors.length < 1) continue + const {sectionHtml,sectionHeight} = await generateSection(finalHeight,section,sectionContributors) + + finalHeight += sectionHeight + finalHtml += sectionHtml + } + + finalHeight += 10 + return {finalHeight,finalHtml} +} + +function generateFinalHtml(sectionsHtml:string,sectionHeight:number){ + return (` + + ${sectionsHtml} + `) +} + +//GENERATE CONTRIBUTORS SVG +async function main(){ + const {finalHeight,finalHtml} = await generateSections(contributorData.sections,contributorData.contributors) + fs.writeFileSync(path.join(process.cwd(),"./.github/CONTRIBUTORS.svg"),generateFinalHtml(finalHtml,finalHeight)) +} +main() \ No newline at end of file diff --git a/.tools/createSponsors.ts b/.tools/createSponsors.ts index 6b2d496..2ad05dc 100644 --- a/.tools/createSponsors.ts +++ b/.tools/createSponsors.ts @@ -1,3 +1,4 @@ +/// import fs from "fs" import path from "path" import crypto from "crypto" diff --git a/README.md b/README.md index f3c272c..3f8a22c 100644 --- a/README.md +++ b/README.md @@ -116,80 +116,57 @@ The bot is fully translated into 38+ languages and has been battle-tested An example of a ticket message. Examples of built-in commands. -## 🛠️ Contributors -### 🖥️ Team & Contributors -A list of amazing people who have contributed or provided supported for **Open Ticket** and **Open Discord**. - - - - - - - - - - - - - - - - - -
Profile PictureProfile PictureProfile PictureProfile PictureProfile PictureProfile Picture
💻🧩💬 DJj123dj🧩💬 Guillee3💬 smetsliam💬 Frank Vissers💬 Sanke🧩 SKaranjaN
- -### 💬 Translators +## 💬 Translations With the amazing support of our translators, we've been able to translate Open Ticket in more than **38 languages**! -#### Categories: -- **🟢 Available** -- **🤖 Partially Made Using AI** -- **🟠 Incomplete** -- **🔴 Unavailable/Outdated** +#### Categories: 🟢 Available - 🤖 Partially Made Using AI - 🟠 Incomplete - 🔴 Unavailable/Outdated -|🔍 |Languages (38) |Maintainer (Github/Discord) | -|----|---------------------|--------------------------------| -|🟢 |🇬🇧 English |djj123dj | -|🟢 |🇳🇱 Dutch |djj123dj | -|🟢 |🇩🇪 German |benzorich | -|🟢 |🇫🇷 French |guillee.3 | -|🟢 |🇪🇸 Spanish |redactado & josuens | -|🟢 |🇵🇹 Portuguese |quiradon | -|🟢 |🇮🇹 Italian |fraden1mvp. & imperatorix_17 | -|🟢 |🇸🇪 Swedish |NoOneNook | -|🟢 |🇳🇴 Norwegian |NoOneNook | -|🟢 |🇹🇭 Thai |modshd | -|🟢 |🇮🇳 Hindi |challenger_nova | -|🟢 |🇭🇺 Hungarian |kornel0706 | -|🟢 |🇮🇩 Indonesian |erxg | -|🟢 |🇱🇹 Lithuanian |tsgindrius | -|🟢 |🇺🇦 Ukrainian |anderskiy | -|🟢 |🇨🇿 Czech |spyeye_ | -|🟢 |🇷🇴 Romanian |sankedev | -|🟢 |🇩🇰 Danish |the_gamer | -|🟢 |🇹🇷 Turkish |palestinian | -|🟢 |🇦🇪 Arabic |palestinian | -|🟢 |🇵🇱 Polish |danoglez | -|🟢 |🇮🇷 Persian |dysashop & zhavis | -|🟢 |🇧🇩 Bengali |HanumeshGupta | -|🟢 |❓ Catalan |guillee3 | -|🟢 |🇨🇳 Traditional Chinese|me.october | -|🟢 |🇰🇭 Khmer (Cambodia) |yuuslokrobjakkroval | -|🤖 |🇪🇪 Estonian |iamnotmega | -|🤖 |🇫🇮 Finnish |iamnotmega | -|🤖 |🇯🇵 Japanese |HanumeshGupta | -|🤖 |🇬🇷 Greek |HanumeshGupta | -|🤖 |🇸🇮 Slovenian |HanumeshGupta | -|🤖 |🇰🇷 Korean |HanumeshGupta | -|🤖 |🇮🇳 Tamil |HanumeshGupta | -|🤖 |🇨🇳 Simplified Chinese |HanumeshGupta | -|🤖 |❓ Kurdish |HanumeshGupta | -|🤖 |🇷🇺 Russian |NoOneNook | -|🤖 |🇱🇻 Latvian |NoOneNook | -|🤖 |🇻🇳 Vietnamese |ngocdiep2006 | +|🔍 |Languages (38) |Config Value |Maintainers (Github/Discord) | +|----|----------------------|------------------------|--------------------------------| +|🟢 |🇬🇧 English |`"english"` |djj123dj | +|🟢 |🇳🇱 Dutch |`"dutch"` |djj123dj | +|🟢 |🇩🇪 German |`"german"` |benzorich | +|🟢 |🇫🇷 French |`"french"` |guillee.3 | +|🟢 |🇪🇸 Spanish |`"spanish"` |Reddishye & josuens | +|🟢 |🇵🇹 Portuguese |`"portuguese"` |quiradon | +|🟢 |🇮🇹 Italian |`"italian"` |fraden1mvp. & imperatorix_17 | +|🟢 |🇸🇪 Swedish |`"swedish"` |NoOneNook | +|🟢 |🇳🇴 Norwegian |`"norwegian"` |NoOneNook | +|🟢 |🇹🇭 Thai |`"thai"` |modshd | +|🟢 |🇮🇳 Hindi |`"hindi"` |challenger_nova | +|🟢 |🇭🇺 Hungarian |`"hungarian"` |kornel0706 | +|🟢 |🇮🇩 Indonesian |`"indonesian"` |erxg | +|🟢 |🇱🇹 Lithuanian |`"lithuanian"` |tsgindrius | +|🟢 |🇺🇦 Ukrainian |`"ukrainian"` |anderskiy | +|🟢 |🇨🇿 Czech |`"czech"` |spyeye_ | +|🟢 |🇷🇴 Romanian |`"romanian"` |sankedev | +|🟢 |🇩🇰 Danish |`"danish"` |the_gamer | +|🟢 |🇹🇷 Turkish |`"turkish"` |palestinian | +|🟢 |🇦🇪 Arabic |`"arabic"` |palestinian | +|🟢 |🇵🇱 Polish |`"polish"` |danoglez | +|🟢 |🇮🇷 Persian |`"persian"` |dysashop & zhavis | +|🟢 |🇧🇩 Bengali |`"bengali"` |HanumeshGupta | +|🟢 |❓ Catalan |`"catalan"` |guillee3 | +|🟢 |🇨🇳 Traditional Chinese|`"traditional-chinese"` |me.october | +|🟢 |🇰🇭 Khmer (Cambodia) |`"khmer"` |yuuslokrobjakkroval | +|🤖 |🇪🇪 Estonian |`"estonian"` |iamnotmega | +|🤖 |🇫🇮 Finnish |`"finnish"` |iamnotmega | +|🤖 |🇯🇵 Japanese |`"japanese"` |HanumeshGupta | +|🤖 |🇬🇷 Greek |`"greek"` |HanumeshGupta | +|🤖 |🇸🇮 Slovenian |`"slovenian"` |HanumeshGupta | +|🤖 |🇰🇷 Korean |`"korean"` |HanumeshGupta | +|🤖 |🇮🇳 Tamil |`"tamil"` |HanumeshGupta | +|🤖 |❓ Kurdish |`"kurdish"` |HanumeshGupta | +|🤖 |🇷🇺 Russian |`"russian"` |NoOneNook | +|🤖 |🇱🇻 Latvian |`"latvian"` |NoOneNook | +|🤖 |🇻🇳 Vietnamese |`"vietnamese"` |ngocdiep2006 | +|🤖 |🇨🇳 Simplified Chinese |`"simplified-chinese"` |HanumeshGupta | +## 😎 Hall Of Fame +The full list of contributors for Open Ticket and Open Discord. + ## ⭐️ Star History -If you enjoy using Open ticket, **consider starring** this repository. +If you enjoy using Open ticket, **consider starring** our repository. This will help us grow and reach even more people! @@ -200,66 +177,6 @@ This will help us grow and reach even more people! -## 🧩 Plugins -**Download all plugins from our [Official Plugin Repository](https://github.com/open-discord-bots/plugins)!**
-> #### ⭐ Featured Plugins (Top 5 Most Used) -> **[`ot-sqlite-database`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-sqlite-database/), -> [`ot-reviews`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-reviews/), -> [`ot-feedback`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-feedback/), -> [`ot-tags`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-tags/), -> [`ot-restrictions`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-restrictions/)** - -#### Categories: -- **📄 Example** - These plugins serve as an example or starting template. -- **📢 Command** - These plugins add new commands to the bot. -- **⚙️ Utility** - These plugins help with utility systems. You might not notice them as a ticket user/admin directly. -- **🎨 Customisation** - These plugins add even more customisation to the bot. -- **💼 Management** - These plugins add features that help you manage your server or ticket system. -- **🤖 Client** - These plugins add features affecting the Discord Client or bot itself. -- Please Create a new category when your plugin doesn't fit in one of the available categories. - -### 📦 Official *(made by DJdj Development)* -|Name |Category |Description | -|----------------------------------------------------------------------|----------------------------|-------------------------| -|[`example-plugin`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/example-plugin/) |📄 Example |This is just an example plugin for people that want to create their own plugin. | -|[`example-command`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/example-command/) |📄 Example |Sample custom command using the Open Discord system. | -|[`ot-jump-to-top`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-jump-to-top/) |📢 Command |Add a simple command to jump to the top of the ticket. | -|[`ot-kill-switch`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-kill-switch/) |📢 Command |Temporarily disable the ticket system using a kill switch. | -|[`ot-hosting-status`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-hosting-status/) |📢 Command |A simple command to send hosting status updates to a channel. | -|[`ot-shutdown`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-shutdown/) |📢 Command |A simple command to turn off the bot from a slash command (server & bot owner only). | -|[`ot-sqlite-database`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-sqlite-database/) |⚙️ Utility |With this plugin, the database will be an SQLite file. It's a must-have for large servers! | -|[`ot-no-slash-clear`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-no-slash-clear/) |⚙️ Utility |Disable the automatic removal of slash commands that aren't used by Open Ticket. | -|[`ot-migrate-v3`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-migrate-v3/) |⚙️ Utility |Use this plugin to migrate all tickets from Open Ticket v3 to v4. | -|[`ot-ticket-message-extras`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-ticket-message-extras/) |🎨 Customisation |A plugin which adds a few little features to the ticket message. | -|[`ot-rename-keep-prefix`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-rename-keep-prefix/) |🎨 Customisation |Simple plugin to keep the channel prefix when using the /rename command. | -|[`ot-customise-buttons`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-customise-buttons/) |🎨 Customisation |Customise almost all built-in buttons. This includes the claim, reopen, close & delete buttons. | -|[`ot-ephemeral-messages`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-ephemeral-messages/) |🎨 Customisation |Customise for every messages if it needs to be ephemeral or not. | -|[`ot-footers`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-footers/) |🎨 Customisation |A simple plugin to add footers in all Open Ticket embeds. | -|[`ot-alt-detector`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-alt-detector/) |💼 Management |Use the discord-alt-detector npm package by DJdj Development in your ticket bot. | -|[`ot-embeds`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-embeds/) |💼 Management |Create custom premade embeds in the config or use the command to create one from scratch. | -|[`ot-move-actions`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-move-actions/) |💼 Management |Automatically unclaim/unpin a ticket when it's moved using `/move`. | -|[`ot-reviews`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-reviews/) |💼 Management |Review system for Open Ticket! It is very customisable and has lots of features. | -|[`ot-tags`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-tags/) |💼 Management |Use tags to quickly reply with a pre-existing text. | -|[`ot-restrictions`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-restrictions/) |💼 Management |Restrict which roles can open a specific ticket option. | -|[`ot-better-status`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-better-status/) |🤖 Client |An advanced status plugin to rotate between states. It also allows for the use of variables. | -|[`ot-channel-display`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-channel-display/) |🤖 Client |A plugin to show different variables in a voice channel in your server. | -|[`ot-vanity`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-vanity/) |🤖 Client |A plugin to detect the vanity status of members in the server and give them exclusive privilleges. | - -### ✅ Verified *(made by community)* -|Name |Author |Category |Description | -|---------------------------------------------------------------------|----------------------------|----------------------------|-------------------------| -|[`ot-config-reload`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-config-reload/) |guillee.3 |⚙️ Utility |This plugin adds a new command that allows reloading the Open Ticket config files without the need for a restart. | -|[`ot-feedback`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-feedback/) |an_developer |💼 Management |A plugin to gather feedback of your support service. | -|[`ot-assign-role`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-assign-role/) |rapid.fast |💼 Management |This plugin assigns a predefined role to a user upon creating a ticket. | -|[`ot-moderation`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-moderation/) |NotMukundOP |💼 Management |A simple moderation plugin for Open Discord with ban, kick & warnings. | -|[`ot-template-system`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-template-system/) |DanoGlez |💼 Management |Predefined template system for sending quick messages. | -|[`ot-volume-warning`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-volume-warning/) |guillee.3 |💼 Management |Alerts ticket creators when too many tickets are open, indicating possible response delays. | -|[`ot-reminders`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-reminders/) |guillee.3 |💼 Management |Set reminders that will be sent to a channel every specified time. | -|[`ot-ticket-forms`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-ticket-forms/) |guillee.3 |💼 Management |An advanced forms plugin for Open Ticket. | -|[`ot-followups`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-followups/) |guillee.3 |💼 Management |Send additional follow-up messages to a ticket. | -|[`ot-twitch-notifier`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-twitch-notifier/) |guillee.3 |💼 Management |Get notified when your favorite Twitch streamers go live. | -|[`ot-translate-cmds`](https://github.com/open-discord-bots/plugins/tree/main/open-ticket/ot-translate-cmds/) |guillee.3 |🤖 Client |Translate all built-in command names, descriptions & options. | - --- Open Ticket Logo diff --git a/package.json b/package.json index 44d4d3f..3bb9c7c 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "testsetup": "node index.js --cli --dev-config --dev-database --soft-plugins", "testnc": "node index.js --no-compile --dev-config --dev-database --soft-plugins", "tools:mergelang": "bun run .tools/mergeTranslations.js", - "tools:sponsors": "bun run .tools/createSponsors.ts" + "tools:sponsors": "bun run .tools/createSponsors.ts", + "tools:contributors": "bun run .tools/createContributors.ts" }, "type": "module", "license": "GPL-3.0-only",