An open API service indexing awesome lists of open source software.

https://github.com/0xgingi/request-bot


https://github.com/0xgingi/request-bot

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

          

# Discord Request Bot

A Discord bot that manages media requests for Jellyfin, Kavita, and Audiobookshelf. Users can request content, and administrators can manage these requests with various status updates.

## Features

- Users can request content using an slash command
- Service selection (Jellyfin, Kavita, Audiobookshelf)
- API integration to check if content already exists
- Search results with selection menu
- Admins receive DM notifications for new requests
- Admins can update request status (in progress, fulfilled, rejected, delayed)
- Users receive DM notifications when their request status changes
- Status tracking
- Request listing with status filtering

## Prerequisites

- Docker or NodeJS
- Discord Bot Token
- Discord User ID (for admin)
- API access to your media services

## Setup

1. Clone the repository:
```bash
git clone https://github.com/0xgingi/request-bot.git
cd request-bot
```
2. Create a `.env` file and add your Discord bot token, admin user ID, and service API details:
```bash
TOKEN=your_discord_bot_token
ADMIN_ID=your_discord_user_id

# Jellyfin Configuration
JELLYFIN_URL=https://your-jellyfin-server.com
JELLYFIN_API_KEY=your_jellyfin_api_key

# Kavita Configuration
KAVITA_URL=https://your-kavita-server.com
KAVITA_API_KEY=your_api_key_here
KAVITA_LOGIN=username:password

# Audiobookshelf Configuration
AUDIOBOOKSHELF_URL=https://your-audiobookshelf-server.com
AUDIOBOOKSHELF_API_KEY=your_audiobookshelf_api_key
```
3. Create an empty requests.json file:
```json
{}
```
4. Run the Docker container:
```bash
docker compose up -d
```

## Usage

### User Commands
- `/request ` - Request content, with interactive service selection
- `/mystatus ` - All Requests
### Admin Commands
- `/status ` - Update the status of a request
- Available statuses: in progress, fulfilled, rejected, delayed
- `/list [status]` - List all requests, optionally filtered by status
- Available filters: pending, in progress, fulfilled, rejected, delayed
- `/clear ` - Clear all requests with a specific status