diff --git a/src/core/api/defaults/config.ts b/src/core/api/defaults/config.ts index bee6f3e..bcc5654 100644 --- a/src/core/api/defaults/config.ts +++ b/src/core/api/defaults/config.ts @@ -275,6 +275,7 @@ export interface ODJsonConfig_DefaultOptionEmbedSettingsType { value:string, inline:boolean }[], + /**Enable setting the timestamp of the embed to the current time. */ timestamp:boolean } @@ -282,8 +283,11 @@ export interface ODJsonConfig_DefaultOptionEmbedSettingsType { * This interface is an object which has all message ping settings for ticket options in the `options.json` config! */ export interface ODJsonConfig_DefaultOptionPingSettingsType { + /**Ping `@here`. */ "@here":boolean, + /**Ping `@everyone`. */ "@everyone":boolean, + /**A list of custom discord role ids to ping. */ custom:string[] } @@ -293,49 +297,92 @@ export interface ODJsonConfig_DefaultOptionPingSettingsType { export interface ODJsonConfig_DefaultOptionTicketType extends ODJsonConfig_DefaultOptionType { type:"ticket", button:ODJsonConfig_DefaultOptionButtonSettingsType, + /**A list of discord role ids which are able to access this ticket type & use commands. */ ticketAdmins:string[], + /**A list of discord role ids which are able to access this ticket type but can't write in the chat. */ readonlyAdmins:string[], + /**When enabled, blacklisted users can still create this ticket type. (used for appeals, etc) */ allowCreationByBlacklistedUsers:boolean, + /**A list of valid question ids from the `questions.json` config. */ questions:string[], + /**All settings related to the ticket channel itself. */ channel:{ + /**The prefix used in the name of this ticket channel. */ prefix:string, + /**The type of suffix used in the name of this ticket channel. */ suffix:"user-name"|"user-id"|"random-number"|"random-hex"|"counter-dynamic"|"counter-fixed", + /**An optional discord category id to create this ticket in. */ category:string, + /**An optional discord category id to move this ticket to when closed. */ closedCategory:string, + /**An optional discord category id to create this ticket in when the primary one is full (max. 50 tickets). */ backupCategory:string, - claimedCategory:{user:string, category:string}[], + /**A list of discord category ids to move this ticket to when claimed by a specific user. */ + claimedCategory:{ + /**The user which claimed the ticket. */ + user:string, + /**The category to move the ticket to when claimed by this user. */ + category:string + }[], + /**The channel description/topic shown at the top of the channel in discord. */ description:string }, + /**All settings related to the message sent in DM to the creator when the ticket is created. */ dmMessage:{ + /**Enable this message. */ enabled:boolean, + /**The raw text contents of this message. (empty for embed only) */ text:string, + /**The embed of this message. */ embed:ODJsonConfig_DefaultOptionEmbedSettingsType }, + /**All settings related to the message sent in the ticket channel when the ticket is created. */ ticketMessage:{ + /**Enable this message. */ enabled:boolean, + /**The raw text contents of this message. (empty for embed only) */ text:string, + /**The embed of this message. */ embed:ODJsonConfig_DefaultOptionEmbedSettingsType, + /**Additional ping/mention settings for this ticket channel. */ ping:ODJsonConfig_DefaultOptionPingSettingsType }, + /**All settings related to autoclosing this ticket type. */ autoclose:{ + /**Enable autoclosing when the ticket is inactive for the set duration of time. */ enableInactiveHours:boolean, + /**The amount of hours this ticket is required to be inactive for. */ inactiveHours:number, + /**Enable autoclosing when the creator of the ticket leaves the server. */ enableUserLeave:boolean, + /**Disable autoclosing when the ticket is claimed by someone. */ disableOnClaim:boolean }, + /**All settings related to autodeleting this ticket type. */ autodelete:{ + /**Enable autodeleting when the ticket is inactive for the set duration of time. */ enableInactiveDays:boolean, + /**The amount of days this ticket is required to be inactive for. */ inactiveDays:number, + /**Enable autodeleting when the creator of the ticket leaves the server. */ enableUserLeave:boolean, + /**Disable autodeleting when the ticket is claimed by someone. */ disableOnClaim:boolean }, + /**All settings related to the cooldown of this ticket type */ cooldown:{ + /**Enable cooldown (per user) */ enabled:boolean, + /**The amount of minutes a user needs to wait before being able to create a ticket again. */ cooldownMinutes:number }, + /**All settings related to the limits of this ticket type */ limits:{ + /**Enable option ticket limits. */ enabled:boolean, + /**The maximum amount of tickets of this type that are allowed in the server at the same time. */ globalMaximum:number, + /**The maximum amount of tickets of this type that a user is allowed to create at the same time. */ userMaximum:number } } @@ -345,6 +392,7 @@ export interface ODJsonConfig_DefaultOptionTicketType extends ODJsonConfig_Defau */ export interface ODJsonConfig_DefaultOptionWebsiteType extends ODJsonConfig_DefaultOptionType { type:"website", + /**The URL this button will point to. */ url:string } @@ -354,9 +402,13 @@ export interface ODJsonConfig_DefaultOptionWebsiteType extends ODJsonConfig_Defa export interface ODJsonConfig_DefaultOptionRoleType extends ODJsonConfig_DefaultOptionType { type:"role", button:ODJsonConfig_DefaultOptionButtonSettingsType, + /**All roles which will be affected by this button. */ roles:string[], + /**The mode determines what will happen with the affected roles on the user. */ mode:OTRoleUpdateMode, + /**A list of roles to remove from the user when given at least one of the affected roles. */ removeRolesOnAdd:string[], + /**Automatically add these roles when the user joins the server. */ addOnMemberJoin:boolean } @@ -378,18 +430,34 @@ export class ODJsonConfig_DefaultOptions extends ODJsonConfig { * This interface is an object which has all message embed settings for panels in the `panels.json` config! */ export interface ODJsonConfig_DefaultPanelEmbedSettingsType { + /**Is this embed enabled? */ enabled:boolean, + /**The title of the embed. */ title:string, + /**The description of this embed. */ description:string, + /**A custom color for this embed. (The default bot color is used when empty) */ customColor:discord.ColorResolvable, + /**An optional URL used in the title of the embed. */ url:string, + /**A URL to an image displayed in the embed. */ image:string, + /**A URL to a thumbnail displayed in the embed. */ thumbnail:string, + /**The footer of this embed. */ footer:string, - fields:{name:string,value:string,inline:boolean}[], + /**A list of fields displayed in the embed. (except when using "describeOptionsInEmbedFields") */ + fields:{ + /**The name of this field. */ + name:string, + /**The value of this field. => empty not allowed */ + value:string, + inline:boolean + }[], + /**Enable setting the timestamp of the embed to the current time. */ timestamp:boolean } @@ -397,23 +465,37 @@ export interface ODJsonConfig_DefaultPanelEmbedSettingsType { * This interface is an object which has all properties for panels in the `panels.json` config! */ export interface ODJsonConfig_DefaultPanelType { + /**The id of this panel. */ id:string, + /**The name of this panel. */ name:string, + /**When enabled, the panel uses a dropdown instead of buttons. */ dropdown:boolean, + /**A list of valid options ids from the `options.json` config. */ options:string[], + /**The raw text contents of this panel. (empty for embed only) */ text:string, + /**The embed of this panel. */ embed:ODJsonConfig_DefaultPanelEmbedSettingsType, settings:{ + /**The placeholder used in the dropdown when enabled. */ dropdownPlaceholder:string, + /**Enable a max tickets warning in the text contents. */ enableMaxTicketsWarningInText:boolean, + /**Enable a max tickets warning in the embed. */ enableMaxTicketsWarningInEmbed:boolean, + /**The layout/complexity of the describe options feature. */ describeOptionsLayout:"simple"|"normal"|"detailed", + /**A custom title for the describe options feature. */ describeOptionsCustomTitle:string, + /**Describe the options in the text contents. */ describeOptionsInText:boolean, + /**Describe the options in the embed fields. */ describeOptionsInEmbedFields:boolean, + /**Describe the options in the embed description. */ describeOptionsInEmbedDescription:boolean } } @@ -432,15 +514,24 @@ export class ODJsonConfig_DefaultPanels extends ODJsonConfig { * This interface is an object which has all properties for short questions in the `questions.json` config! */ export interface ODJsonConfig_DefaultShortQuestionType { + /**The id of this question. */ id:string, + /**The name of this question. */ name:string, + /**The type of this question. */ type:"short", + /**Is this question required? */ required:boolean, + /**A placeholder for the question. */ placeholder:string, + /**Settings related to the length of the input. */ length:{ + /**Enable text length verification. */ enabled:boolean, + /**The minimum text input length. */ min:number, + /**The maximum text input length. */ max:number } } @@ -449,15 +540,24 @@ export interface ODJsonConfig_DefaultShortQuestionType { * This interface is an object which has all properties for paragraph questions in the `questions.json` config! */ export interface ODJsonConfig_DefaultParagraphQuestionType { + /**The id of this question. */ id:string, + /**The name of this question. */ name:string, + /**The type of this question. */ type:"paragraph", + /**Is this question required? */ required:boolean, + /**A placeholder for the question. */ placeholder:string, + /**Settings related to the length of the input. */ length:{ + /**Enable text length verification. */ enabled:boolean, + /**The minimum text input length. */ min:number, + /**The maximum text input length. */ max:number } } @@ -483,56 +583,98 @@ export class ODJsonConfig_DefaultQuestions extends ODJsonConfig { */ export class ODJsonConfig_DefaultTranscripts extends ODJsonConfig { declare data: { + /**All general settings related to transcripts. */ general:{ + /**Are transcripts enabled? */ enabled:boolean, + /**Enable sending the generated transcript in a channel. */ enableChannel:boolean, + /**Enable sending the generated transcript to the DM of the ticket creator. */ enableCreatorDM:boolean, + /**Enable sending the generated transcript to the DM of the participants. */ enableParticipantDM:boolean, + /**Enable sending the generated transcript to the DM of all admins which were active in the ticket. */ enableActiveAdminDM:boolean, + /**Enable sending the generated transcript to the DM of all admins which were assigned to the ticket. */ enableEveryAdminDM:boolean, + /**A discord channel id for the `"enableChannel"` setting. */ channel:string, + /**Want to use text or HTML transcripts? */ mode:"html"|"text" }, + /**All settings related to the embed from the transcripts. (UNIMPLEMENTED!!) */ embedSettings:{ + /**Unimplemented feature */ customColor:discord.ColorResolvable, + /**Unimplemented feature */ listAllParticipants:boolean, + /**Unimplemented feature */ includeTicketStats:boolean }, + /**The layout of the text transcripts. */ textTranscriptStyle:{ + /**The layout/complexity of the text transcripts. */ layout:"simple"|"normal"|"detailed", + /**Include stats in the transcript. */ includeStats:boolean, + /**Include user & message ids in the transcript. */ includeIds:boolean, + /**Include embeds in the transcript. */ includeEmbeds:boolean, + /**Include files in the transcript. */ includeFiles:boolean, + /**Include bot messages in the transcript. */ includeBotMessages:boolean, + /**How to name the transcript file? */ fileMode:"custom"|"channel-name"|"channel-id"|"user-name"|"user-id", + /**A custom name for the transcript file (when using `"custom"`) */ customFileName:string }, + /**The layout of the HTML transcripts. */ htmlTranscriptStyle:{ + /**Settings related to the background. */ background:{ + /**Enable a custom background. */ enableCustomBackground:boolean, + /**The background (hex) color. */ backgroundColor:string, + /**The background image url. */ backgroundImage:string }, + /**Settings related to the header. */ header:{ + /**Enable a custom header. */ enableCustomHeader:boolean, + /**The background (hex) color of the header. */ backgroundColor:string, + /**The deco color (horizontal line) of the header. */ decoColor:string, + /**The text color of the header. */ textColor:string }, + /**Settings related to the stats section. */ stats:{ + /**Enable a custom stats section. */ enableCustomStats:false, + /**The background color of the stats section. */ backgroundColor:string, + /**The key text color of the stats section. */ keyTextColor:string, + /**The value text color of the stats section. */ valueTextColor:string, + /**The background color of the hide button in the stats section. */ hideBackgroundColor:string, + /**The text color of the hide button in the stats section. */ hideTextColor:string }, + /**Settings related to the favicon. */ favicon:{ + /**Enable a custom background. */ enableCustomFavicon:boolean, + /**A link to the custom favicon. */ imageUrl:string } }