(v4.2.0) Large README overhaul (Part 2)
This commit is contained in:
@@ -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":""}
|
||||
]
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 2.1 MiB |
@@ -20,6 +20,7 @@ otdebug.txt
|
||||
.backup/*
|
||||
.tools/*
|
||||
!.tools/createSponsors.ts
|
||||
!.tools/createContributors.ts
|
||||
!.tools/mergeTranslations.ts
|
||||
!.tools/docker-compose.yml
|
||||
!.tools/dockerfile
|
||||
@@ -0,0 +1,130 @@
|
||||
/// <reference types="node"/>
|
||||
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 `<text x="${20}" y="${yPos+20}" text-anchor="start" class="contributor-tier-title">${name}</text>`
|
||||
}
|
||||
|
||||
async function createPfp(yPos:number,xPos:number,size:number,contributor:Contributor,withNames:boolean){
|
||||
const randomId = crypto.randomBytes(8).toString("hex")
|
||||
const nameElement = (withNames) ? `<text x="${Math.round(xPos+(size/2))}" y="${yPos+size+20}" text-anchor="middle" fill="currentColor">${contributor.name}</text>` : ""
|
||||
|
||||
return (`<a href="${contributor.profileUrl}" class="contributor-link" target="_blank">
|
||||
<clipPath id="clipPath-${randomId}">
|
||||
<rect x="${xPos}" y="${yPos}" width="${size}" height="${size}" rx="${CORNER_RADIUS}" ry="${CORNER_RADIUS}"/>
|
||||
</clipPath>
|
||||
<image x="${xPos}" y="${yPos}" width="${size}" height="${size}" href="${await downloadPfpToBase64URL(contributor.pictureUrl)}" clip-path="url(#clipPath-${randomId})"/>
|
||||
${nameElement}
|
||||
</a>`)
|
||||
}
|
||||
|
||||
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 (`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 ${SVG_WIDTH} ${sectionHeight}" width="${SVG_WIDTH}" height="${sectionHeight}">
|
||||
<style>
|
||||
text {
|
||||
font-weight: 300;
|
||||
font-size: 14px;
|
||||
fill: #777777;
|
||||
font-family: 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||
}
|
||||
.contributor-link {
|
||||
cursor: pointer;
|
||||
}
|
||||
.contributor-tier-title {
|
||||
font-weight: 500;
|
||||
font-size: 20px;
|
||||
}
|
||||
</style>
|
||||
${sectionsHtml}
|
||||
</svg>`)
|
||||
}
|
||||
|
||||
//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()
|
||||
@@ -1,3 +1,4 @@
|
||||
/// <reference types="node"/>
|
||||
import fs from "fs"
|
||||
import path from "path"
|
||||
import crypto from "crypto"
|
||||
|
||||
@@ -116,80 +116,57 @@ The bot is fully translated into <b>38+ languages</b> and has been battle-tested
|
||||
<img alt="An example of a ticket message." src="https://apis.dj-dj.be/cdn/openticket/preview-v4/ticket-example.png">
|
||||
<img alt="Examples of built-in commands." src="https://apis.dj-dj.be/cdn/openticket/preview-v4/command-examples.png">
|
||||
|
||||
## 🛠️ Contributors
|
||||
### 🖥️ Team & Contributors
|
||||
A list of amazing people who have contributed or provided supported for **Open Ticket** and **Open Discord**.
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center"><img src="https://github.com/DJj123dj.png" alt="Profile Picture" width="80px"></td>
|
||||
<td align="center"><img src="https://github.com/guillee3.png" alt="Profile Picture" width="80px"></td>
|
||||
<td align="center"><img src="https://github.com/smetsliam.png" alt="Profile Picture" width="80px"></td>
|
||||
<td align="center"><img src="https://github.com/FrankVissers.png" alt="Profile Picture" width="80px"></td>
|
||||
<td align="center"><img src="https://github.com/Sank34.png" alt="Profile Picture" width="80px"></td>
|
||||
<td align="center"><img src="https://github.com/SKaranjaN.png" alt="Profile Picture" width="80px"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><a href="https://github.com/DJj123dj">💻🧩💬 DJj123dj</a></th>
|
||||
<th><a href="https://github.com/guillee3">🧩💬 Guillee3</a></th>
|
||||
<th><a href="https://github.com/smetsliam">💬 smetsliam</a></th>
|
||||
<th><a href="https://github.com/FrankVissers">💬 Frank Vissers</a></th>
|
||||
<th><a href="https://github.com/Sank34">💬 Sanke</a></th>
|
||||
<th><a href="https://github.com/SKaranjaN">🧩 SKaranjaN</a></th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### 💬 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 |
|
||||
<!--[⭐ Contribute!](.github/CONTRIBUTING.md) -->
|
||||
|
||||
## 😎 Hall Of Fame
|
||||
<img alt="The full list of contributors for Open Ticket and Open Discord." src=".github/CONTRIBUTORS.svg">
|
||||
|
||||
## ⭐️ 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!
|
||||
|
||||
<a href="https://star-history.com/#open-discord-bots/open-ticket&Date">
|
||||
@@ -200,66 +177,6 @@ This will help us grow and reach even more people!
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
## 🧩 Plugins
|
||||
**Download all plugins from our [Official Plugin Repository](https://github.com/open-discord-bots/plugins)!**<br>
|
||||
> #### ⭐ 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. |
|
||||
|
||||
---
|
||||
<img src="https://apis.dj-dj.be/cdn/openticket/logo.png" alt="Open Ticket Logo" width="170px">
|
||||
|
||||
|
||||
+2
-1
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user