(v4.2.0) Fixed all known bugs

This commit is contained in:
DJj123dj
2026-05-15 22:00:55 +02:00
parent 15ff345948
commit cf9ddf58d0
14 changed files with 10 additions and 127 deletions
+1 -1
View File
@@ -25,7 +25,7 @@ Need help or want to get involved? Feel free to join our <a href="https://discor
<p align="center"><sup>❤️ Love Open Ticket? <a href="https://github.com/sponsors/DJj123dj">Sponsorships</a> help fuel our HTML transcript servers and future features! ❤️</sup></p> <p align="center"><sup>❤️ Love Open Ticket? <a href="https://github.com/sponsors/DJj123dj">Sponsorships</a> help fuel our HTML transcript servers and future features! ❤️</sup></p>
--- ---
> **[-> Navigate to (⏱️ Quick Setup)](#️-quick-start-using-cli)** > **[-> Navigate to (⏱️ Quick Setup)](#️-quick-start-using-interactive-cli-tool)**
> **[-> Navigate to (📚 Documentation)](https://otdocs.dj-dj.be)** > **[-> Navigate to (📚 Documentation)](https://otdocs.dj-dj.be)**
> **[-> Navigate to (📞 Support Server)](https://discord.dj-dj.be)** > **[-> Navigate to (📞 Support Server)](https://discord.dj-dj.be)**
+1 -1
View File
@@ -26,7 +26,7 @@
"license": "GPL-3.0-only", "license": "GPL-3.0-only",
"dependencies": { "dependencies": {
"@discordjs/rest": "^2.6.1", "@discordjs/rest": "^2.6.1",
"@open-discord-bots/framework": "^0.3.17", "@open-discord-bots/framework": "^0.4.0",
"@types/node": "^22.5.0", "@types/node": "^22.5.0",
"@types/terminal-kit": "^2.5.7", "@types/terminal-kit": "^2.5.7",
"ansis": "^4.2.0", "ansis": "^4.2.0",
+1 -1
View File
@@ -628,7 +628,7 @@ const ticketEmbeds = () => {
const answers = ticket.get("opendiscord:answers").value const answers = ticket.get("opendiscord:answers").value
answers.forEach((answer) => { answers.forEach((answer) => {
if (!answer.value || answer.value.length == 0) return if (!answer.value || answer.value.length == 0) return
if (generalConfig.data.system.questionFieldsInCodeBlock) instance.addFields({name:answer.name,value:"```"+answer.value+"```",inline:false}) if (generalConfig.data.system.questionFieldsInCodeBlock) instance.addFields({name:answer.name,value:"```"+answer.value.slice(0,1024-6)+"```",inline:false})
else instance.addFields({name:answer.name,value:answer.value,inline:false}) else instance.addFields({name:answer.name,value:answer.value,inline:false})
}) })
}else if (embedOptions.fields){ }else if (embedOptions.fields){
+2 -2
View File
@@ -30,7 +30,7 @@ const ticketModals = () => {
required:question.get("opendiscord:required").value, required:question.get("opendiscord:required").value,
placeholder:(question.get("opendiscord:placeholder").value) ? question.get("opendiscord:placeholder").value : undefined, placeholder:(question.get("opendiscord:placeholder").value) ? question.get("opendiscord:placeholder").value : undefined,
minLength:(question.get("opendiscord:length-enabled").value) ? question.get("opendiscord:length-min").value : undefined, minLength:(question.get("opendiscord:length-enabled").value) ? question.get("opendiscord:length-min").value : undefined,
maxLength:(question.get("opendiscord:length-enabled").value) ? question.get("opendiscord:length-max").value : undefined maxLength:Math.min(1024-6,(question.get("opendiscord:length-enabled").value) ? question.get("opendiscord:length-max").value : (1024-6)) //embed field limit - 6x` characters
}) })
else if (question instanceof api.ODParagraphQuestion) instance.addQuestion({ else if (question instanceof api.ODParagraphQuestion) instance.addQuestion({
customId:question.id.value, customId:question.id.value,
@@ -39,7 +39,7 @@ const ticketModals = () => {
required:question.get("opendiscord:required").value, required:question.get("opendiscord:required").value,
placeholder:(question.get("opendiscord:placeholder").value) ? question.get("opendiscord:placeholder").value : undefined, placeholder:(question.get("opendiscord:placeholder").value) ? question.get("opendiscord:placeholder").value : undefined,
minLength:(question.get("opendiscord:length-enabled").value) ? question.get("opendiscord:length-min").value : undefined, minLength:(question.get("opendiscord:length-enabled").value) ? question.get("opendiscord:length-min").value : undefined,
maxLength:(question.get("opendiscord:length-enabled").value) ? question.get("opendiscord:length-max").value : undefined maxLength:Math.min(1024-6,(question.get("opendiscord:length-enabled").value) ? question.get("opendiscord:length-max").value : (1024-6)) //embed field limit - 6x` characters
}) })
}) })
}) })
-10
View File
@@ -3,16 +3,6 @@
/////////////////////////////////////// ///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api" import * as api from "@open-discord-bots/framework/api"
/** (CONTRIBUTOR GUIDE) HOW TO ADD NEW COMMANDS?
* - Register the command in loadAllSlashCommands() & loadAllTextCommands() in (./src/data/framework/commandLoader.ts)
* - Add autocomplete for the command in OD(Slash/Text)CommandManagerIds_Default in (./src/core/api/defaults/client.ts)
* - Add the command to the help menu in (./src/data/framework/helpMenuLoader.ts)
* - If required, new config variables should be added (incl. logs, dm-logs & permissions).
* - Update the Open Ticket Documentation.
* - If the command contains complex logic or can be executed from a button/dropdown, it should be placed inside an `ODAction`.
* - Check all files, test the bot carefully & try a lot of different scenario's with different settings.
*/
/**## ODSlashCommandManagerIdMappings `interface` /**## ODSlashCommandManagerIdMappings `interface`
* A list of all available IDs in the default `ODSlashCommandManager` class in `opendiscord`. * A list of all available IDs in the default `ODSlashCommandManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class. * It's used to generate typescript declarations for this class.
-20
View File
@@ -5,26 +5,6 @@ import * as api from "@open-discord-bots/framework/api"
import * as discord from "discord.js" import * as discord from "discord.js"
import { ODRoleUpdateMode } from "../api/role.js" import { ODRoleUpdateMode } from "../api/role.js"
/** (CONTRIBUTOR GUIDE) HOW TO ADD NEW CONFIG VARIABLES?
* - Make the change to the config file in (./config/) and be aware of the following things:
* - The variable has a clear name and its function is obvious.
* - The variable is in the correct position/category of the config.
* - The variable contains a default placeholder to suggest the contents.
* - If there's a (./devconfig/), also modify this file.
* - Register the config in loadAllConfigs() in (./src/data/framework/configLoader.ts)
* - The variable should be added to the "formatters" in the correct position.
* - Add autocomplete for the variable in ODJsonConfig_Default... in (./src/core/api/defaults/config.ts)
* - Add the variable to the config checker in (./src/data/framework/checkerLoader.ts)
* - Make sure the variable is compatible with the Interactive Setup CLI.
* - The variable should be added by the migration manager (./src/core/startup/migration.ts) when missing.
* - Update the Open Ticket Documentation.
*
* IF VARIABLE IS FROM questions.json, options.json OR panels.json:
* - Check (./src/data/openticket/...) for loading/unloading of data.
* - Check (./src/actions/createTicket.ts) and related files.
* - Check (./src/builders), (./src/actions), (./src/data) & (./src/commands) in general in the areas that were changed.
*/
/**## ODConfigManagerIdMappings `interface` /**## ODConfigManagerIdMappings `interface`
* A list of all available IDs in the default `ODConfigManager` class in `opendiscord`. * A list of all available IDs in the default `ODConfigManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class. * It's used to generate typescript declarations for this class.
-10
View File
@@ -3,16 +3,6 @@
/////////////////////////////////////// ///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api" import * as api from "@open-discord-bots/framework/api"
/** (CONTRIBUTOR GUIDE) HOW TO ADD NEW COMMANDS?
* - Register the command in loadAllSlashCommands() & loadAllTextCommands() in (./src/data/framework/commandLoader.ts)
* - Add autocomplete for the command in OD(Slash/Text)CommandManagerIds_Default in (./src/core/api/defaults/client.ts)
* - Add the command to the help menu in (./src/data/framework/helpMenuLoader.ts)
* - If required, new config variables should be added (incl. logs, dm-logs & permissions).
* - Update the Open Ticket Documentation.
* - If the command contains complex logic or can be executed from a button/dropdown, it should be placed inside an `ODAction`.
* - Check all files, test the bot carefully & try a lot of different scenario's with different settings.
*/
/**## ODHelpMenuManagerIdMappings `interface` /**## ODHelpMenuManagerIdMappings `interface`
* A list of all available IDs in the default `ODHelpMenuManager` class in `opendiscord`. * A list of all available IDs in the default `ODHelpMenuManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class. * It's used to generate typescript declarations for this class.
-9
View File
@@ -3,15 +3,6 @@
/////////////////////////////////////// ///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api" import * as api from "@open-discord-bots/framework/api"
/** (CONTRIBUTOR GUIDE) HOW TO ADD NEW LANGUAGES?
* - Add the file to (./languages/) and make sure the metadata is valid.
* - Register the language in loadAllLanguages() in (./src/data/framework/languageLoader.ts).
* - Add autocomplete for the language in ODLanguageManagerIds_Default in (./src/core/api/defaults/language.ts).
* - Update the language list in the README.md translator list.
* - Update the 2 language counters in the README.md features list.
* - Update the Open Ticket Documentation.
*/
/**## ODLanguageManagerIdMappings `interface` /**## ODLanguageManagerIdMappings `interface`
* A list of all available IDs in the default `ODLanguageManager` class in `opendiscord`. * A list of all available IDs in the default `ODLanguageManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class. * It's used to generate typescript declarations for this class.
-20
View File
@@ -2,26 +2,6 @@ import {opendiscord, api, utilities} from "../../index.js"
const generalConfig = opendiscord.configs.get("opendiscord:general") const generalConfig = opendiscord.configs.get("opendiscord:general")
/** (CONTRIBUTOR GUIDE) HOW TO ADD NEW CONFIG VARIABLES?
* - Make the change to the config file in (./config/) and be aware of the following things:
* - The variable has a clear name and its function is obvious.
* - The variable is in the correct position/category of the config.
* - The variable contains a default placeholder to suggest the contents.
* - If there's a (./devconfig/), also modify this file.
* - Register the config in loadAllConfigs() in (./src/data/framework/configLoader.ts)
* - The variable should be added to the "formatters" in the correct position.
* - Add autocomplete for the variable in ODJsonConfig_Default... in (./src/core/api/defaults/config.ts)
* - Add the variable to the config checker in (./src/data/framework/checkerLoader.ts)
* - Make sure the variable is compatible with the Interactive Setup CLI.
* - The variable should be added by the migration manager (./src/core/startup/migration.ts) when missing.
* - Update the Open Ticket Documentation.
*
* IF VARIABLE IS FROM questions.json, options.json OR panels.json:
* - Check (./src/data/openticket/...) for loading/unloading of data.
* - Check (./src/actions/createTicket.ts) and related files.
* - Check (./src/builders), (./src/actions), (./src/data) & (./src/commands) in general in the areas that were changed.
*/
export async function loadAllConfigCheckers(){ export async function loadAllConfigCheckers(){
opendiscord.checkers.add(new api.ODChecker("opendiscord:general",opendiscord.checkers.storage,0,opendiscord.configs.get("opendiscord:general"),defaultGeneralStructure,{cliDisplayName:"General Config",cliDisplayDescription:"Configure the bot token, status, colors, permissions & more."})) opendiscord.checkers.add(new api.ODChecker("opendiscord:general",opendiscord.checkers.storage,0,opendiscord.configs.get("opendiscord:general"),defaultGeneralStructure,{cliDisplayName:"General Config",cliDisplayDescription:"Configure the bot token, status, colors, permissions & more."}))
opendiscord.checkers.add(new api.ODChecker("opendiscord:questions",opendiscord.checkers.storage,2,opendiscord.configs.get("opendiscord:questions"),defaultQuestionsStructure,{cliDisplayName:"Questions Config",cliDisplayDescription:"Create, modify & delete questions which are used in options."})) opendiscord.checkers.add(new api.ODChecker("opendiscord:questions",opendiscord.checkers.storage,2,opendiscord.configs.get("opendiscord:questions"),defaultQuestionsStructure,{cliDisplayName:"Questions Config",cliDisplayDescription:"Create, modify & delete questions which are used in options."}))
-10
View File
@@ -3,16 +3,6 @@ import * as discord from "discord.js"
const lang = opendiscord.languages const lang = opendiscord.languages
/** (CONTRIBUTOR GUIDE) HOW TO ADD NEW COMMANDS?
* - Register the command in loadAllSlashCommands() & loadAllTextCommands() in (./src/data/framework/commandLoader.ts)
* - Add autocomplete for the command in OD(Slash/Text)CommandManagerIds_Default in (./src/core/api/defaults/client.ts)
* - Add the command to the help menu in (./src/data/framework/helpMenuLoader.ts)
* - If required, new config variables should be added (incl. logs, dm-logs & permissions).
* - Update the Open Ticket Documentation.
* - If the command contains complex logic or can be executed from a button/dropdown, it should be placed inside an `ODAction`.
* - Check all files, test the bot carefully & try a lot of different scenario's with different settings.
*/
export async function loadAllSlashCommands(){ export async function loadAllSlashCommands(){
const commands = opendiscord.client.slashCommands const commands = opendiscord.client.slashCommands
const generalConfig = opendiscord.configs.get("opendiscord:general") const generalConfig = opendiscord.configs.get("opendiscord:general")
-20
View File
@@ -1,26 +1,6 @@
import {opendiscord, api, utilities} from "../../index.js" import {opendiscord, api, utilities} from "../../index.js"
import * as fjs from "formatted-json-stringify" import * as fjs from "formatted-json-stringify"
/** (CONTRIBUTOR GUIDE) HOW TO ADD NEW CONFIG VARIABLES?
* - Make the change to the config file in (./config/) and be aware of the following things:
* - The variable has a clear name and its function is obvious.
* - The variable is in the correct position/category of the config.
* - The variable contains a default placeholder to suggest the contents.
* - If there's a (./devconfig/), also modify this file.
* - Register the config in loadAllConfigs() in (./src/data/framework/configLoader.ts)
* - The variable should be added to the "formatters" in the correct position.
* - Add autocomplete for the variable in ODJsonConfig_Default... in (./src/core/api/defaults/config.ts)
* - Add the variable to the config checker in (./src/data/framework/checkerLoader.ts)
* - Make sure the variable is compatible with the Interactive Setup CLI.
* - The variable should be added by the migration manager (./src/core/startup/migration.ts) when missing.
* - Update the Open Ticket Documentation.
*
* IF VARIABLE IS FROM questions.json, options.json OR panels.json:
* - Check (./src/data/openticket/...) for loading/unloading of data.
* - Check (./src/actions/createTicket.ts) and related files.
* - Check (./src/builders), (./src/actions), (./src/data) & (./src/commands) in general in the areas that were changed.
*/
export async function loadAllConfigs(){ export async function loadAllConfigs(){
const devconfigFlag = opendiscord.flags.get("opendiscord:dev-config") const devconfigFlag = opendiscord.flags.get("opendiscord:dev-config")
const isDevconfig = devconfigFlag ? devconfigFlag.value : false const isDevconfig = devconfigFlag ? devconfigFlag.value : false
-10
View File
@@ -2,16 +2,6 @@ import {opendiscord, api, utilities} from "../../index.js"
const lang = opendiscord.languages const lang = opendiscord.languages
/** (CONTRIBUTOR GUIDE) HOW TO ADD NEW COMMANDS?
* - Register the command in loadAllSlashCommands() & loadAllTextCommands() in (./src/data/framework/commandLoader.ts)
* - Add autocomplete for the command in OD(Slash/Text)CommandManagerIds_Default in (./src/core/api/defaults/client.ts)
* - Add the command to the help menu in (./src/data/framework/helpMenuLoader.ts)
* - If required, new config variables should be added (incl. logs, dm-logs & permissions).
* - Update the Open Ticket Documentation.
* - If the command contains complex logic or can be executed from a button/dropdown, it should be placed inside an `ODAction`.
* - Check all files, test the bot carefully & try a lot of different scenario's with different settings.
*/
export async function loadAllHelpMenuCategories(){ export async function loadAllHelpMenuCategories(){
const helpmenu = opendiscord.helpmenu const helpmenu = opendiscord.helpmenu
-9
View File
@@ -1,14 +1,5 @@
import {opendiscord, api, utilities} from "../../index.js" import {opendiscord, api, utilities} from "../../index.js"
/** (CONTRIBUTOR GUIDE) HOW TO ADD NEW LANGUAGES?
* - Add the file to (./languages/) and make sure the metadata is valid.
* - Register the language in loadAllLanguages() in (./src/data/framework/languageLoader.ts).
* - Add autocomplete for the language in ODLanguageManagerIds_Default in (./src/core/api/defaults/language.ts).
* - Update the language list in the README.md translator list.
* - Update the 2 language counters in the README.md features list.
* - Update the Open Ticket Documentation.
*/
export async function loadAllLanguages(){ export async function loadAllLanguages(){
//register languages //register languages
opendiscord.languages.add(new api.ODJsonLanguage("opendiscord:custom","custom.json")) opendiscord.languages.add(new api.ODJsonLanguage("opendiscord:custom","custom.json"))
+5 -4
View File
@@ -380,7 +380,7 @@ const main = async () => {
//throw if bot doesn't have permissions in main server //throw if bot doesn't have permissions in main server
if (!client.checkGuildPerms(mainServer)){ if (!client.checkGuildPerms(mainServer)){
console.log("\n") console.log("\n")
opendiscord.log("The bot doesn't have the correct permissions in the server provided in the config!","error") opendiscord.log("The bot doesn’t have the required permissions for the server specified in the configuration.","error")
opendiscord.log("Please give the bot \"Administrator\" permissions or visit the documentation!","info") opendiscord.log("Please give the bot \"Administrator\" permissions or visit the documentation!","info")
console.log("\n") console.log("\n")
process.exit(1) process.exit(1)
@@ -388,12 +388,13 @@ const main = async () => {
if (opendiscord.sharedFuses.getFuse("clientMultiGuildWarning")){ if (opendiscord.sharedFuses.getFuse("clientMultiGuildWarning")){
//warn if bot is in multiple servers //warn if bot is in multiple servers
if (botServers.length > 1){ if (botServers.length > 1){
opendiscord.log("This bot is part of multiple servers, but Open Ticket doesn't provide support for this!","warning") opendiscord.log("This bot is part of multiple servers, but Open Ticket does not support this.","warning")
opendiscord.log("As a result, the bot may crash & glitch when used in the additional servers!","info") opendiscord.log("The bot may have weird behaviour when used in external servers!","info")
await utilities.timer(2000)
} }
botServers.forEach((server) => { botServers.forEach((server) => {
//warn if bot doesn't have permissions in multiple servers //warn if bot doesn't have permissions in multiple servers
if (!client.checkGuildPerms(server)) opendiscord.log(`The bot doesn't have the correct permissions in the server "${server.name}"!`,"warning") if (!client.checkGuildPerms(server)) opendiscord.log(`The bot doesn’t have the required permissions for the server "${server.name}".`,"warning")
}) })
} }