# Application Bot

## Configuration

### Tickets

* `tickets.topic` : Sets the channel topic for new tickets
* `tickets.transcriptChannel` : The ID of the channel where transcripts should be sent on ticket close
* `tickets.types.x.createLimit` : The number of tickets a user can create
* `tickets.types.x.prefix` : The prefix for that ticket
* `tickets.types.x.category` : The category that the ticket should be created in
* `tickets.types.x.roles` : The roles that should be added to the ticket upon creation

```javascript
'tickets': {
    'topic': '',
    'transcriptChannel': '',
    'types': {
        'application': {
            'createLimit': 1,
            'prefix': 'app-%username%',
            'category': '',
            'roles': [],
        },
        'support': {
            'createLimit': 2,
            'prefix': 'support-%username%',
            'category': '',
            'roles': [],
        },
    },
},
```

### Applications

* `applications.reviewChannel`: The ID of the channel where application reviews should take place
* `applications.options`: The applications. Due to Discord limits, you may only create 25 application types. The key for each application needs to be unique!
* `applications.options.x.role` : Auto role (optional) for when the user get's accepted
* `applications.options.x.label` : The label for the select menu
* `applications.options.x.description` : The description for the select menu
* `applications.options.x.emoji` : The emoji (optional) for the select menu
* `applications.options.x.modal.title` : The title of the modal for that question
* `applications.options.x.modal.questions` : The questions to be added to the modal. Discord only allows a max of 5 options!
* `applications.options.x.modal.y.role` : The role to give the user when accepted (auto role -&#x20;
* `applications.options.x.modal.y.label` : The question
* `applications.options.x.modal.y.placeholder` : Question placeholder text
* `applications.options.x.modal.y.required` : Whether or not the question is required
* `applications.options.x.modal.y.paragraph` : If the text-box should be a paragraph or short
* `applications.options.x.modal.y.minLength` : Sets a minimum character limit
* `applications.options.x.modal.y.maxLength` : Sets a maximum character limit

```javascript
'applications': {
    'reviewChannel': '',
    'options': {
        'moderator': {
            'role': '',
            'label': 'Community Moderator',
            'description': 'Enforce rules & manage users',
            'emoji': '🛡️',
            'modal': {
                'title': 'New App | Community Moderator',
                'questions': [
                    {
                        'label': 'Why do you want this role?',
                        'placeholder': '',
                        'required': true,
                        'paragraph': true,
                        'minLength': 0,
                        'maxLength': 500,
                    },
                    {
                        'label': 'Any prior experience?',
                        'placeholder': '',
                        'required': false,
                        'paragraph': true,
                        'minLength': 0,
                        'maxLength': 300,
                    },
                ],
            },
        },
        'support_staff': {
            'role': '',
            'label': 'Support Staff',
            'description': 'Help users & answer questions',
            'emoji': '💬',
            'modal': {
                'title': 'New App | Support Staff',
                'questions': [
                    {
                        'label': 'Any customer support experience?',
                        'placeholder': '',
                        'required': true,
                        'paragraph': true,
                        'minLength': 0,
                        'maxLength': 500,
                    },
                    {
                        'label': 'How would you handle a combative user?',
                        'placeholder': '',
                        'required': true,
                        'paragraph': true,
                        'minLength': 0,
                        'maxLength': 500,
                    },
                ],
            },
        },
        'event_manager': {
            'role': '',
            'label': 'Event Manager',
            'description': 'Plan & manage events',
            'emoji': '🎉',
            'modal': {
                'title': 'New App | Event Manager',
                'questions': [
                    {
                        'label': 'Any event planning experience?',
                        'placeholder': '',
                        'required': true,
                        'paragraph': true,
                        'minLength': 0,
                        'maxLength': 500,
                    },
                    {
                        'label': 'What events would you organize?',
                        'placeholder': '',
                        'required': true,
                        'paragraph': true,
                        'minLength': 0,
                        'maxLength': 200,
                    },
                ],
            },
        },
    },
},
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bluedev.xyz/premade-bots/application-bot.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
