# 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](COPYING).