idio-sync / romm-comm

RomM-ComM (RomM Communicator Module) - Discord bot that interfaces with Romm API
12 stars 1 forks source link

RomM-ComM (RomM Communicator Module)

A Discord bot that integrates with the RomM API to provide information about your ROM collection and conrol RomM from Discord.

Features

Current

In Progress

Planned (if possible)

Requirements

Installation

Docker:

  1. docker pull idiosync000/romm-comm:latest
  2. Pass env variables as shown below
  3. Pass /app/data in the container to host directory, this is where the request DB and emoji sync status are stored

Non-Docker:

  1. Clone the repository or download the source code
  2. Install required dependencies:
    pip install py-cord aiohttp python-dotenv qrcode Pillow python-socketio requests aiosqlite

    Discord Bot Token Creation

RomM Settings

If you want browser downloads to function for users without logging in and Switch shop/Qr code downloads to function on consoles, set Add DISABLE_DOWNLOAD_ENDPOINT_AUTH=true to your RomM environment variables. Without this setting disabled, the user clicking the download link will have to have a RomM account and log in before downloading.

Configuration

Create a .env file in the root directory with the following variables:

# Required Settings
TOKEN=your_discord_bot_token
GUILD=your_guild_id
API_URL=your_api_base_url
USER=api_username
PASS=api_password

# Optional Settings
DOMAIN=your_website_domain
SYNC_RATE=3600
REQUESTS_ENABLED=TRUE
ENABLE_USER_MANAGER=TRUE
AUTO_REGISTER_ROLE_ID=romm_users_role_id
UPDATE_VOICE_NAMES=true
CHANNEL_ID=your_channel_id
SHOW_API_SUCCESS=false
CACHE_TTL=300
API_TIMEOUT=10

Configuration Details

Required Settings:

Optional Settings:

Visable Statistics

Voice Channel Stat Display

VC Stats

Bot "Now Playing" ROM count

Bot Status

Emojis

Automatic Emoji management. Provides:

Nitro

3ds arcade dos dreamcast xbox_og wii ps psp ps2 snes, etc

Available Commands

/refresh

Manually update API data from RomM.

/stats

Show current collection statistics.

Slash Stats

/platforms

Display all available platforms with their ROM counts.

Slash Platforms

/search [platform] [game]

Search for ROMs by platform and game name. Provides:

Slash Search

/random [platfom]*

/firmware [platform]

List available firmware files for a specific platform. Shows:

Slash Firmware

/scan [option]

Trigger RomM library scan. Options are:

Slash Scan

Requests

Request

RequestSubmitted

RrequestFulfulledDM

ListRequests

Request System Features:

Admin Features:

Dababase Structure:

Error Handling

The bot includes comprehensive error handling and logging:

Cache System

Implements an efficient caching system:

Security

Troubleshooting