saulteafarmer 1a09e1404d Update plugin to 0.2.0
Update LNBits to work with v1
Integrate channel messages instead of DMs
Utilize websockets instead of post
2025-05-10 18:02:58 +00:00
2025-05-10 18:02:58 +00:00
2025-05-10 18:02:58 +00:00
2025-03-09 03:36:10 +00:00
2025-05-10 18:02:58 +00:00
2025-05-10 18:02:58 +00:00

Discord LNbits Bot

This bot allows users to purchase a Discord role using Bitcoin Lightning payments through LNbits.
Users request an invoice via a slash command (configurable), and the bot automatically assigns the role once payment is confirmed.


🚀 Features

  • Dynamic slashcommand name (configured via command_name)
  • Generates a Lightning invoice via LNbits
  • Listens on LNbits WebSocket for paid invoices
  • Automatically assigns a Discord role on payment
  • Posts confirmations directly in your designated channel

📋 Requirements

  • Ubuntu 24.04
  • Python 3.10+
  • A Discord Bot Token (from the Developer Portal)
  • LNbits Wallet Invoice Key
  • A running LNbits instance (e.g., Sats.Love)

1 Setting Up Your Bot

  1. Go to: Discord Developer Portal
  2. Click New Application
  3. Go to OAuth2 > URL Generator
  4. Check these Scopes:
    • bot
    • applications.commands (for slash commands)
  5. Under Bot Permissions, check:
    • Manage Roles
    • Send Messages
    • Embed Links
    • Read Message History
  6. Copy & paste the generated link into your browser.
  7. Select your Discord server and click Authorize.

Enable Privileged Intents

  1. Go to Discord Developer Portal.
  2. Select your bot application.
  3. Navigate to Bot in the left sidebar.
  4. Scroll down to Privileged Gateway Intents.
  5. Enable the following:
    • Presence Intent
    • Server Members Intent
    • Message Content Intent
  6. Click Save Changes.

Ensure Correct Role Permissions

  1. Go to Server SettingsRoles.
  2. Drag the bots 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

sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip python3-venv -y

2. Clone the Repository

git clone https://code.rustysats.com/saulteafarmer/discord-lnbits-bot
cd discord-lnbits-bot

3. Create & Activate Virtual Environment

python3 -m venv venv
source venv/bin/activate

4. Install Dependencies

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 SettingsRoles.
  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:

sudo nano config.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",
  "channelid": "YOUR_CHANNELID_FOR_PURCHASE_ROOM",
  "price": 1000,
  "command_name": "support",
  "invoicemessage": "Invoice for your purchase."
}

🔹 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_keyInvoice-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)
  • invoicemessage → Message to be sent with invoice
  • channelid → Discord channel where invoices and confirmations post

5 Run the Bot

python3 discord_lnbits_bot.py

6 Running the Bot in the Background

nohup python3 discord_lnbits_bot.py &

🔹 To stop the bot:

pkill -f discord_lnbits_bot.py

License

This project is open-source and free to use. Contributions welcome!

Description
No description provided
Readme MIT 70 KiB
Languages
Python 100%