# About Nodbot Nodbot is a content saving and serving Discord bot. Nodbot is able to search Tenor for GIFs, save custom copypastas, and look up marijuana strain information. Nodbot is in semi-active development by voidf1sh. It's buggy as hell and very shoddily built. Don't use it. # Nodbot Help Use the `/help` command to see the bot's help message. ## Create Docker Image `docker build --tag=name/nodbot .` ## Push Docker Image `docker push name/nodbot` # Immediate To-Do 1. ~~Sanitize inputs for SQL queries.~~ Done. 2. ~~Move environment variables so they don't get included in the image.~~ 3. Implement error handling on all actions. 4. Ephemeral responses to some/most slash commands. 5. Comment the code! Document! 6. Check for and create database tables if necessary. Handle errors. # Deploy NodBot Yourself 1. Create an application at the [Discord Developer Portal](https://discord.com/developers/applications) 2. Convert the application into a Bot 3. Note down the token provided and keep this safe. You cannot view this token again, only regenerate a new one. 4. Create a Tenor account and obtain an API key. 5. Install and configure MySQL or MariaDB with a user for the bot and a datbase * Create the table structure as outlined below (* Nodbot will soon create its own table structure) 6. Configure your environment variables as outlined below. 7. Fire it up with `node main.js` ## Table Structure ``` Table: gifs +-----------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+---------------+------+-----+---------+----------------+ | id | int(11) | NO | MUL | NULL | auto_increment | | name | varchar(100) | NO | | NULL | | | embed_url | varchar(1000) | NO | | NULL | | +-----------+---------------+------+-----+---------+----------------+ Table: joints +---------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+---------------+------+-----+---------+----------------+ | id | int(11) | NO | MUL | NULL | auto_increment | | content | varchar(1000) | NO | | NULL | | +---------+---------------+------+-----+---------+----------------+ Table: pastas +---------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+---------------+------+-----+---------+----------------+ | id | int(11) | NO | MUL | NULL | auto_increment | | name | varchar(100) | NO | | NULL | | | content | varchar(1900) | NO | | NULL | | | iconurl | varchar(200) | NO | | (url) | | +---------+---------------+------+-----+---------+----------------+ Table: requests +---------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+---------------+------+-----+---------+----------------+ | id | int(11) | NO | MUL | NULL | auto_increment | | author | varchar(100) | NO | | NULL | | | request | varchar(1000) | NO | | NULL | | | status | varchar(10) | YES | | Active | | +---------+---------------+------+-----+---------+----------------+ Table: strains +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | id | smallint(6) | NO | | NULL | | | name | varchar(60) | YES | | NULL | | | type | varchar(10) | YES | | NULL | | | effects | varchar(80) | YES | | NULL | | | ailment | varchar(70) | YES | | NULL | | | flavor | varchar(30) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+ ``` ## Environment Variables ``` TOKEN= isDev= dbHost= dbPort= dbUser= dbPass= dbName= tenorAPIKey= ownerId= statusChannelId= clientId= ``` ## Changes v3.0.1 - Migrate TenorJS API Endpoint v3.0.2 - Add medical advice commands v3.0.3 - Fix broken `/requests` command v3.0.4 - Add ability to use multiple aliases v3.0.5 - Add ability to save strains v3.0.6 - Move `.strain` to `/strain` and add Autocomplete v3.0.7 - Add `.spongebob` replies v3.0.8 - Add ability to open requests by pages