Files
FrugalityBot/README.md

76 lines
2.3 KiB
Markdown

# FrugalityBot
Frugality is a Discord Bot written in Ruby using `discordrb` and PostgreSQL. Its usage is meant to track your own finances, with monthly and/or yearly reports. Work in progress.
## Features
1. Commands are separated into individual files in `src/commands`. This is the only place you'll need to add a new command.
2. Automatically loads and registers new command files on startup.
3. Uses PostgreSQL to store data (User IDs, coins amount, reason, timestamps).
4. Supports Discord's slash commands.
## Prerequisites
Before running the bot, ensure you have the following installed on your system:
* **Ruby 3.3**
* **Bundler**
* **PostgreSQL**
* **Git**
* **ImageMagick**
## Installation
1. **Clone the repository:**
```bash
git clone https://git.thenight.club/csxkdv/FrugalityBot.git
cd FrugalityBot
```
2. **Configure Bundler locally:**
This ensures gems are installed inside the project folder to avoid permission issues.
```bash
bundle config set --local path 'vendor/bundle'
```
3. **Install Dependencies:**
```bash
bundle install
```
## Database Setup
The bot requires a PostgreSQL database.
1. **Create a database user:**
```bash
sudo -u postgres createuser -s user
```
2. **Create the database:**
```bash
createdb database
```
**The database name is also specified [here](https://git.thenight.club/csxkdv/FrugalityBot/src/branch/main/src/database.rb). Ensure it's the same as the one you'll use.**
*Note: The bot will automatically create the necessary tables (like `wallets` and `transactions`) the first time it connects. If you want new tables, update the database file as desired.*
## Configuration
1. Create a `.env` file in the root directory:
```bash
touch .env
```
2. Add your secrets to the `.env` file:
```env
BOT_TOKEN=your_discord_bot_token_here
TEST_SERVER_ID=your_discord_server_id
```
*Note: Add a Server ID only if you're planning on updating the bot frequently, and want instant changes.*
## Usage
To start the bot, you must use `bundle exec` to load the local dependencies:
```bash
bundle exec ruby main.rb
```
Wait for the bot to connect, and that's it, you can start using it.
## License
This project is licensed under the [GNU General Public License v3.0](https://spdx.org/licenses/GPL-3.0-or-later.html).