Silvanus is a companion bot for Limbo Labs' Grow A Tree bot
			https://silvanus.vfsh.dev
		
		
		
		
		
		
		
		
		
		
		
			| .github/workflows | ||
| dot-commands | ||
| slash-commands | ||
| _clear-commands.js | ||
| _deploy-commands.js | ||
| _deploy-global.js | ||
| .dockerignore | ||
| .DS_Store | ||
| .eslintrc.json | ||
| .gitignore | ||
| CHANGELOG.md | ||
| config.json | ||
| Dockerfile | ||
| functions.js | ||
| main.js | ||
| package.json | ||
| README.md | ||
| Roadmap.md | ||
| strings.json | ||
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
- Sanitize inputs for SQL queries.Done.
- Move environment variables so they don't get included in the image.
- Implement error handling on all actions.
- Ephemeral responses to some/most slash commands.
- Comment the code! Document!
- Check for and create database tables if necessary. Handle errors.
Deploy NodBot Yourself
- Create an application at the Discord Developer Portal
- Convert the application into a Bot
- Note down the token provided and keep this safe. You cannot view this token again, only regenerate a new one.
- Create a Tenor account and obtain an API key.
- 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)
- Configure your environment variables as outlined below.
- 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=<your bot's token from step 3>
isDev=<true/false>
dbHost=<mySQL host>
dbPort=<mySQL port (3306)>
dbUser=<mySQL username>
dbPass=<mySQL user password>
dbName=<mySQL table name>
tenorAPIKey=<Tenor API Key>
ownerId=<your Discord user ID>
statusChannelId=<Discord channel ID of channel used for status messages>
clientId=<Discord user ID of your bot>