TheOchulus/README.md

225 lines
4.5 KiB
Markdown

![The Ochulus logo](logo.png)
The Ochulus is a simple personal discord bot used for tracking games completed during a 100 Game Challenge.
# Requirements
## Software
- Node.js (version v21.2.0 or later)
- npm (version 10.2.3 or later)
## API Keys
- Discord Developer Application
- IGDB Developer Application
# How to deploy
0. Create accounts and install software
1. [Download and install Node.js and npm](https://nodejs.org/en).
1. [Create Discord Developer Application](https://discord.com/developers/applications).
2. [Create IGDB Developer Application](https://www.igdb.com/api).
1. Create `.env` using `.env.template`
1. Populate `discordClientId`, `discordGuildId` and `discordToken` with your Discord Developer Application details.
2. Populate `igdbClientId` and `igdbClientSecret` with your IGDB Developer Application details.
2. Run `npm install` to install Node Packages
3. Run `node .\dbInit.js` to create database.
4. Run `node .\deploy-commands.js` to deploy commands to your guild
5. Run `node .\index.js` to run the bot.
# Commands
A list of current commands that can be accessed by all users.
## /beatgame
Log a beat game towards the 100 Game Challenge.
**Parameters:**
*Note: One parameter is required.*
- **Required**
- `gamename` - The name of the game.
- `gameid` - The IGDB game ID.
## /beatlist
Show a list of games the user has beaten.
**Parameters:**
- *Optional*
- `user` - The username of a user to check.
## /currentlyplaying
Show the list of games the user are currently playing.
**Parametes:**
- *Optional*
- `user` - The username of a user to check.
## /deletebeatengame
Deletes a game from the users beaten games.
**Parameters:**
*Note: If no parameter is supplied, the latest beat game is deleted.*
- *Optional*
- `beatgamenumber` - The number of the beat game entry to delete.
## /deleteplannedgame
Deletes a game from the users planned games.
**Parametes:**
- *Optional*
- `currentgamenumber` - The number of the current game entry to delete.
## /deleteplayinggame
Deletes a game from the users currently playing games.
**Parametes:**
- *Optional*
- `currentgamenumber` - The number of the current game entry to delete.
## /estimatedfinishdate
Get an estimated date as to when a user will finish the 100 games challenge.
**Parametes:**
- *Optional*
- `user` - The username of a user to check.
## /gamedetails
Get the details of a game from the IGDB database.
**Parameters:**
*Note: Only one parameter is required.*
- **Required**
- `gamename` - The name of the game.
- `gameid` - The IGDB game ID.
## /globalbeatlist
Show a list of all games beaten for the 100 games challenge in chronological order.
## /info
Get info on the bot.
## /leaderboard
Shows the leaderboard for the 100 Game Challenge.
## /plangame
Log a planned game into a list of planned games.
**Parameters:**
*Note: One parameter is required.*
- **Required**
- `gamename` - The name of the game.
- `gameid` - The IGDB game ID.
## /plannedgames
Show a list of games the user has planned.
**Parameters:**
- *Optional*
- `user` - The username of a user to check.
## /och
Responds "*och*".
## /randomgame
Get a random game from the IGDB database.
**Parameters:**
- *Optional*
- `madness` - Remove restrictions on the games the bot can search for.
## /randomplannedgame
Get a random planned game from the list of a users planned games.
**Parameters:**
- *Optional*
- `user` - The username of a user to check.
## /recentbeat
Get the most recent game a given user has beaten.
**Parameters:**
- *Optional*
- `user` - The username of a user to check.
## /recentplanned
Get the most recent game a given user has planned.
**Parameters:**
- *Optional*
- `user` - The username of a user to check.
## /recentplaying
Get the most recent game a given user has started playing.
**Parameters:**
- *Optional*
- `user` - The username of a user to check.
## /register
Manually registers the user into the 100 Games Challenge.
## /searchgames
Searches the IGDB database for a list of matching games.
**Parameters:**
- **Required**
- `gamename` - The name of the game.
## /startplaying
Log a game into a list of currently playing games.
**Parameters:**
*Note: One parameter is required.*
- **Required**
- `gamename` - The name of the game.
- `gameid` - The IGDB game ID.
## /user
Get the users info for the 100 Game Challenge
**Parameters:**
- *Optional*
- `user` - The username of a user to check.