75 lines
2.5 KiB
Markdown
75 lines
2.5 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, and embeds for financial reports.
|
|
|
|
## Prerequisites
|
|
Before running the bot, ensure you have the following installed on your system:
|
|
* **Ruby 3.3**
|
|
* **Bundler**
|
|
* **PostgreSQL**
|
|
* **Git**
|
|
|
|
## 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 to be seen. Otherwise, remove it from the .env file and every `server_id: ENV['TEST_SERVER_ID']` line from the `register_application_command` on every `src/commands/*.rb` file.*
|
|
|
|
## 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). |