# VylBot Core Documentation Welcome to the VylBot Core documentation. In this file we will explain how to setup and use VylBot Core in your project. ## Contents 1. Initial Setup 2. Configuring the client 3. Creating a command 4. Handling an event 5. Configuring command configs ## 1. Initial Setup To setup the package, download it from `npm` ```bash cd npm install vylbot-core ``` Add to your .js file ```js const vylbot = require('vylbot-core'); const config = require('./config.json'); const client = new vylbot.client(config); client.start(); ``` ## 2. Configuring the client When creating a new `vylbot.client` object you need to pass through some json configuration. This can be either from a .json file or directly written. > **Note:** We recommend using a .json file and adding it to your `.gitignore` file to prevent accidentally publishing your bot token. An example configuration: ```json { "token": "", "prefix": "!", "commands": [ "commands" ], "events": [ "events" ], "cmdconfig": "cmdconfig.json" } ``` - Make sure the folders that you set for `commands` and `events` exist and are at your project's current working directory. - Make sure the file set in `cmdconfig` exists and contains json data for the commands (see below) ## 3. Creating a command A basic command goes as follows: ```js // commands/test.js const { command } = require('vylbot-core'); class test extends command { constructor() { super("test"); super.description = "Test description"; super.category = "general"; super.configs = "link"; super.roles = "Moderator"; super.roles = "Admin"; super.users = ""; } test(context) { context.message.channel.send("Hello there, " + context.config.link); } } module.exports = test; ``` 1. You create a class and export it using `module.exports` and make it extend the vylbot's `command` class. 2. In the `constructor()` you need to call `super(run)`, replacing `run` with a string of the name of the method which will run when the command runs. 3. Call any of the `super` variables to give it some description, the current ones you can use are: `description`, `category`, `usage` 4. If you want the command to only be allowed to run by people with a role, set the role name in `super.roles` > **Note:** You can set more than one role to be required by setting `super.roles` again. 5. If you want the command to only be ran by specific users, set their ID in `super.users` > **Note:** You can set more than one user to be required by settubg `super.users` again. 6. If you want the command to require a variable in the config, set the name in `super.configs` > **Note:** You can set more than one role to be required by setting `super.configs` again. 7. Create a method using the name you set in `super(run)`, with the `context` as its parameter. The `context` parameter will be a JSON object of: ```json { "command": "", "arguments": "", "client": " **Note:** The name of the event file will determine what event it will be triggered on. For example, if you want to have an event trigger everytime a message is sent, put into your event folder a file called `message.js` and follow the steps above. ## 5. Configuring command configs The command config json (specified in the main config's `cmdconfig` variable) contiains all the configuration set for the commands. The syntax is as follows: ```json { "Command": { "Variable": "Value" } } ``` - **Command:** The name of the command, such as `ban.js` command would be `ban`. - **Variable:** The variable name set in the command, this would be one for every `super.configs` in the command's constructor. - **Value:** The value for the command. An example would be: ```js // ban.js class ban extends Command { constructor() { super("ban"); super.configs = "modrole"; // ... } // ... } ``` Would have in the command config file: ```json { "ban": { "modrole": "Moderators" } } ```