225 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			225 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
 | |
| 
 | |
| 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. |