Skylar Grant
e5d520a73b
Reviewed-on: #17 Vastly improved the help message formatting and fixed a bug causing the help message to crash due to too many fields. Fixed by moving away from fields, then by filtering the command names to be unique. Aliases are being loaded as entirely new commands which will need to be fixed later. |
||
---|---|---|
.gitea/workflows | ||
CustomModules | ||
dot-commands | ||
slash-commands | ||
_clear-commands.js | ||
_deploy-commands.js | ||
_deploy-global.js | ||
.dockerignore | ||
.eslintrc.json | ||
.gitignore | ||
config.json | ||
Dockerfile | ||
functions.js | ||
main.js | ||
package.json | ||
README.md | ||
Roadmap.md | ||
strings.json | ||
update.sh |
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.
Status
This should be ready to merge into main
, let it run a couple days with testing before creating a PR. METAR and D-ATIS are implemented. TAFs will come later as they're more complicated.
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.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.
- Readjust keyword autoresponses to be more generic instead of hard coded
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
Recent Changes
- Added METAR via AviationWeather.gov API
- Added D-ATIS via datis.clowd.io API
- Updated how keyword autoresponses are handled
- Changed
.joint
to reduce duplication and repetition by implementing an Ashtray and Roaches
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>
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