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:

    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.

    bundle config set --local path 'vendor/bundle'
    
  3. Install Dependencies:

    bundle install
    

Database Setup

The bot requires a PostgreSQL database.

  1. Create a database user:

    sudo -u postgres createuser -s user
    
  2. Create the database:

    createdb database
    

    The database name is also specified here. 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:

    touch .env
    
  2. Add your secrets to the .env file:

    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:

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.

Description
Finance-tracking Discord bot made in Ruby.
Readme GPL-3.0 126 KiB
Languages
Ruby 100%