2025-03-09 03:36:29 +00:00
# Discord LNbits Bot
2025-03-09 03:36:10 +00:00
2025-03-09 03:36:29 +00:00
This bot allows users to purchase a **Discord role** using **Bitcoin Lightning payments** through LNbits. Users request an invoice via a **slash command** , and the bot automatically assigns the role **once payment is confirmed** .
## Features
✅ Users request an invoice using `/support` (configurable).
✅ The bot generates a **Lightning invoice** via LNbits.
✅ Once paid, the bot assigns a **Discord role** .
✅ Configurable check intervals & max attempts to verify payments.
---
## Requirements
- **Ubuntu 24.04**
- **Python 3.10+**
- **A Discord Bot Token** (from the [Developer Portal ](https://discord.com/developers/applications ))
- **LNbits Wallet Invoice Key**
- **A running LNbits instance** (e.g., [Sats.Love ](https://sats.love/ ))
---
## 1️ ⃣ Setting Up Your Bot
### Generate a Proper Bot Invite Link
1. **Go to** : [Discord Developer Portal ](https://discord.com/developers/applications )
2. **Click New Application**
3. Go to **OAuth2 > URL Generator**
4. **Check these Scopes** :
- ✅ **bot**
- ✅ **applications.commands** (for slash commands)
4. **Under Bot Permissions** , check:
- ✅ **Manage Roles**
- ✅ **Send Messages**
- ✅ **Embed Links**
- ✅ **Read Message History**
5. **Copy & paste the generated link into your browser.**
6. **Select your Discord server** and click **Authorize** .
---
### Enable Privileged Intents
1. **Go to** [Discord Developer Portal ](https://discord.com/developers/applications ).
2. **Select your bot application.**
3. **Navigate to** `Bot` in the left sidebar.
4. **Scroll down to** `Privileged Gateway Intents` .
5. **Enable** the following:
2025-03-09 03:42:12 +00:00
- ✅ **Presence Intent**
- ✅ **Server Members Intent**
- ✅ **Message Content Intent**
2025-03-09 03:36:29 +00:00
6. **Click Save Changes.**
---
### Ensure Correct Role Permissions
1. **Go to Server Settings** → `Roles` .
2. **Drag the bot’ s role ABOVE** the role it needs to assign.
3. **Ensure the bot has these permissions** :
- ✅ **Manage Roles**
- ✅ **Read Messages**
- ✅ **Send Messages**
---
## 2️ ⃣ Installation Guide
### 1. Install System Dependencies
```bash
sudo apt update & & sudo apt upgrade -y
sudo apt install python3 python3-pip python3-venv -y
```
### 2. Clone the Repository
```bash
git clone https://code.rustysats.com/saulteafarmer/discord-lnbits-bot
cd discord-lnbits-bot
```
### 3. Create & Activate Virtual Environment
```bash
python3 -m venv venv
source venv/bin/activate
```
### 4. Install Dependencies
```bash
pip install -r requirements.txt
```
---
## 3️ ⃣ Find Your Discord Guild ID & Role ID
Before configuring the bot, retrieve your **Guild ID** and **Role ID** .
### 🔹 How to Find Your Guild ID (Server ID):
1. Open **Discord** → Go to **User Settings** (⚙️).
2. Scroll down to **Advanced** → Enable **Developer Mode** .
3. **Right-click your server name** (left sidebar) → Click **Copy ID** .
4. **Save this ID** for later (`guild_id` ).
### 🔹 How to Find Your Role ID:
1. Open your **Discord Server** .
2. Go to **Server Settings** → **Roles** .
3. **Right-click on the role** you want to assign → Click **Copy ID** .
4. **Save this ID** for later (`role_id` ).
---
## 4️ ⃣ Configure the Bot
Edit the `config.json` file inside the bot directory:
```bash
sudo nano config.json
```
```json
{
"discord_token": "YOUR_DISCORD_BOT_TOKEN",
"guild_id": "YOUR_GUILD_ID",
"role_id": "YOUR_ROLE_ID",
"lnbits_url": "https://sats.love",
"lnbits_api_key": "YOUR_INVOICE_READ_KEY",
"price": 1000,
"command_name": "support",
"check_interval": 30,
"max_checks": 20
}
```
### 🔹 What Each Setting Does:
- **`discord_token` ** → Your bot token from Discord Developer Portal
- **`guild_id` ** → Your Discord server ID
- **`role_id` ** → The Discord role the bot will assign
- **`lnbits_url` ** → Base URL of your LNbits instance
- **`lnbits_api_key` ** → **Invoice-only key** from LNbits (⚠️ NOT an admin key)
- **`price` ** → Price in **satoshis** (e.g., `1000` = 1000 sats)
- **`command_name` ** → Name of the command (default: `support` )
- **`check_interval` ** → How often (in seconds) the bot checks for payments
- **`max_checks` ** → How many times the bot will check before stopping
---
## 5️ ⃣ Run the Bot
```bash
python3 discord_lnbits_bot.py
```
---
## 6️ ⃣ Running the Bot in the Background
```bash
nohup python3 discord_lnbits_bot.py &
```
🔹 **To stop the bot** :
```bash
pkill -f discord_lnbits_bot.py
```
---
## License
This project is **open-source** and free to use. Contributions welcome!