# 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).