Accept Bitcoin donations on Twitch, and integrate them into your alerts!

Overview

The system in action

Check out how seamlessly the project works!

Support the project

You can tip me with some sats here!
This is, and always will be, entirely free to use of course!

Rough test setup guide

This is currently intended for testing only.
You need to have git, python, and it's virtualenv module installed.

  1. Clone the repo and cd into it
  2. Create and enable a virtualenv
  3. In the venv, run pip install -r requirements.txt
  4. Get an lntxbot wallet
  5. Get an API key from lntxbot by messaging it /api full
  6. Log in to https://streamlabs.com/
  7. Register an App
    As this is an app just for you, you can fill the name, description
    phone, and email fields with whatever you want. They are not relevant.
    In the "Whitelist Users" field, enter your Twitch username.
    In "Redirect URI", enter "http://localhost:6969".
  8. After hitting "Create", leave this page open for now, as it contains
    your Client ID and Secret, which you will need in the next step
  9. Run python initial_setup.py and follow the instructions (enter localhost as the IP for now)
  10. Run python wait_for_token.py and leave this running
  11. On the Streamlabs App page, click the link that says "Sample Authentication URL"
    towards the bottom of the page
  12. Click "Approve"; this should redirect you to a plain text page that tells you to stop the server
  13. Go back to the terminal that is running wait_for_token.py,
    and hit ctrl+c to stop the server
  14. You should now be able to run . ./start_lnbits.sh, which should launch
    LNbits in the background, making it reachable at http://localhost:5000/
  15. Run python webhook.py and leave it running in the background
  16. In LNbits, create a wallet, and enable the SatsPayServer extension under "Manage extensions"
  17. In SatsPayServer, hit "NEW CHARGE," and fill out all the required fields
    In the "webhook" field, enter http://localhost:5001/
  18. Pay the charge with any lightning wallet
    (After hitting "CREATE CHARGE," the charge should appear in a list after
    an automatic refresh. On the very left side of that list entry is a small
    grey button that will open the payment link in a new tab.)

If everything worked, you should see a new donation pop up here (remember to refresh).
If something went wrong, please submit an issue!

Contributing

I want this to be a project that allows streamers on Twitch to integrate Bitcoin donations
into their on-stream alerts with as little setup as possible.
Things you can help with:

  • Clarifying steps in the guide, or linking to/writing more detailed guides to get non-technical users up to speed
  • Writing scripts that would make this run on Windows (in case a streamer opts for self-hosting on Windows)

I'm not at all used to maintaining projects with other contributors, so I don't know, just follow the
common etiquette or whatever if you wanna help :)
I would especially appreciate help with just making things cleaner and more efficient (I'm not a professional),
as well as potentially integrating services other than Streamlabs (not sure if there are any
that are widely used like Streamlabs and actually have an API for this).

Comments
  • Create LNbits extension

    Create LNbits extension

    Optimally, parts of this repo should become an LNbits extension:

    • Most of what is currently in settings.json could be set via UI
    • API endpoint that serves as redirect for Streamlabs access_token (essentially wait_for_token.py)
    • webhook.py as background service

    The extension should also allow modification of the donation format that is sent here.

    The extension's front end would ideally be a simple tipping form that asks for "Name," "Message," and "Amount" in either sats or any of the supported currencies, converting the amount to sats to create an invoice.
    Another option that would be great to have available is a Twitch login button that auto-fills the "Name" field, and sets the identifier to a unique ID value, like the Twitch User ID (see here).

    I've created a branch to work on this: https://github.com/Fittiboy/lnbits/tree/TwitchAlerts Will be closed by lnbits/lnbits#227

    enhancement help wanted 
    opened by Fittiboy 5
  • Your tip link doesn't work from BLW

    Your tip link doesn't work from BLW

    Hi,

    I tried to send tip from the BLW wallet (@btcontract - author of the LNURL) but I got the error:

    "requirement failed: Action domain mismatch"

    From the Blixt wallet - there is everything OK.

    I think your chain URLs from LNURL communication has different domains but the LNURL protocol requires to have the same domains (#6 point - "url domain must be the same as callback domain at step 3" in example comment)

    Is it your the bug or the BLW?

    opened by Perlover 3
  • Integreate StreamElements API

    Integreate StreamElements API

    It appears that StreamElements is currently working on providing a nice API. They have a WIP API reference which includes an endpoint to post tips, exactly what is needed to integrate this.

    Would be great to have this!

    documentation enhancement help wanted 
    opened by Fittiboy 1
  • Sovereign

    Sovereign

    This PR adds a guide on how to cut out all middlemen and run this in self-sovereign mode.
    The Bitcoin way.
    Closes #5

    • [ ] How to set up your own node (Just link to Raspiblitz)
    • [ ] How to change the funding source of LNbits
    documentation enhancement 
    opened by Fittiboy 0
  • Enable full self-sovereignty

    Enable full self-sovereignty

    The original purpose of this project was to cut out all middlemen.
    To this end, the only change that has to be made is the LNbits funding source.
    Two short guides are required for this:

    • [ ] How to set up your own node (Just link to Raspiblitz)
    • [ ] How to change the funding source of LNbits

    It should also be considered to potentially use Raspiblitz' LNbits

    documentation enhancement 
    opened by Fittiboy 0
  • Automate Bitclouds.sh Setup

    Automate Bitclouds.sh Setup

    A lot of the setup required for Bitclouds.sh hosting can be automated.

    • [ ] Purchasing a Bitclouds VPS instance
    • [ ] Checking remaining balance
      • [ ] Low balance alerts
        • [ ] Discord webhook?
        • [ ] Telegram bot?
        • [ ] Email?
    • [ ] Getting a top-up invoice
    • [ ] Installing git and python3-venv
    • [ ] Caddy
      • [ ] Adding the repo
      • [ ] Installing caddy
      • [ ] Creating the Caddyfile
    documentation enhancement 
    opened by Fittiboy 0
  • Add hosting guides for #2

    Add hosting guides for #2

    This PR adds guides on how to actually host this publicly.
    Closes #2

    • [ ] Purchasing a Bitclouds VPS instance
    • [ ] Checking remaining balance
      • [ ] Low balance alerts
        • [ ] Discord webhook?
        • [ ] Telegram bot?
        • [ ] Email?
    • [ ] Getting a top-up invoice
    • [ ] Installing git and python3-venv
    • [ ] Caddy
      • [ ] Adding the repo
      • [ ] Installing caddy
      • [ ] Creating the Caddyfile
    documentation enhancement 
    opened by Fittiboy 0
  • Create guide on how to deploy publicly

    Create guide on how to deploy publicly

    Currently, the system is fully functional, but does not yet include a guide on how to publicly deploy.

    • [ ] Acquiring a domain
      • [ ] Full domain name
      • [ ] Duck DNS
    • [ ] Guide on how to self-host
      • [ ] Setting up nginx
        • [ ] SSL cert via certbot
        • [ ] Enabling reverse-proxy
        • [ ] Opening the necessary port (443)
      • [ ] Setting up Cloudflare
        • [ ] Creating an account
        • [ ] Adding domain to Cloudflare
        • [ ] Hiding behind Cloudflare
        • [ ] Whitelisting Cloudflare IP range
    • [ ] Guide on how to host via Bitclouds
      • [ ] Basic Bitclouds setup guide
      • [ ] Keeping Bitclouds instance up (keep funding it!)
      • [ ] Installing git, python3-venv, and Caddy
      • [ ] Creating a Caddyfile
    documentation enhancement 
    opened by Fittiboy 0
Releases(v1.0.2)
  • v1.0.2(Aug 4, 2021)

  • v1.0.1(Aug 3, 2021)

    This small update adds user whitelisting! The whitelist_user.py script allows users to add their user ID to the LNBITS_ALLOWED_USERS environment variable, preventing people from creating wallets on their LNbits instance. This change is reflected in the guide as well.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Aug 3, 2021)

This is a simple application to generate HD wallet addresses for cryptocurrency coins.

HD-Wallet-Address This is a mini service to generate addresses in the master HD-Wallet. It will use py_crypto_hd_wallet package as a base. Prerequisit

Amin Abbasi 1 Dec 16, 2021
A Python module to encrypt and decrypt data with AES-128 CFB mode.

cryptocfb A Python module to encrypt and decrypt data with AES-128 CFB mode. This module supports 8/64/128-bit CFB mode. It can encrypt and decrypt la

Quan Lin 2 Sep 23, 2022
This is a fully functioning Binance trading bot that takes into account the news sentiment for the top 100 crypto feeds.

This is a fully functioning Binance trading bot that takes into account the news sentiment for the top 100 crypto feeds.

Andrei 1.5k Jan 04, 2023
Use this script to track the gains of cryptocurrencies using historical data and display it on a super-imposed chart in order to find the highest performing cryptocurrencies historically

crypto-performance-tracker Use this script to track the gains of cryptocurrencies using historical data and display it on a super-imposed chart in ord

Andrei 25 Aug 31, 2022
High Performance Blockchain Deserializer

bitcoin_explorer is an efficient library for reading bitcoin-core binary blockchain file as a database (utilising multi-threading).

Congyu 2 Dec 28, 2021
An extreme encryption for everyone, encrypt your text before sending to anyone.

An extreme encryption for everyone, encrypt your text before sending to anyone. Alphabets and numbers are going to be encrypted like a hell

Saad 6 Oct 28, 2022
The (Python-based) mining software required for the Nintendo Switch mining project.

ntgbtminer - Nintendo Switch edition This is a version of ntgbtminer that works with the Nintendo Switch bitcoin miner. ntgbtminer ntgbtminer is a no

4 Jun 03, 2021
⚡ Automatically decrypt encryptions without knowing the key or cipher, decode encodings, and crack hashes ⚡

⚡ Automatically decrypt encryptions without knowing the key or cipher, decode encodings, and crack hashes ⚡

11.2k Jan 09, 2023
Generate a 2FA Code out of an 2FA Secret(Time-based only!)

2FA-Generator Generate a 2FA Code out of an 2FA Secret(Time-based only!) ❗ Pleas don't share this secrets/generated codes with someone. If someone kno

TheDanniCraft 1 Nov 05, 2021
Stai Beta Of Staiking Chain - Food, Water And Electricity - Worldwide

Stai Beta Of Staiking Chain - Food, Water And Electricity - Worldwide

STATION-I 2 Feb 05, 2022
A simple Ethereum mining pool

A simple getWork pool for ethereum mining Payouts are still manual. TODO: write payouts when someone mines 10 blocks. Also, make the submit actually

93 Oct 05, 2022
This program can encrypt/ decrypt any string

Ceasar_cipher Hey this is J0ey, this program is a very basic Caesar cipher encoder/decoder. In order to use this program, you will need to have Python

1 Jan 11, 2022
Salted Crypto Python library

Salted Crypto Python library. Allows to encrypt and decrypt files and directories using popular cryptographic algorithms with salty key(s).

7 Jul 18, 2022
XMRiGUI is free and open-source crypto miner for Linux. It uses XMRig for mining and GTK3 for GUI.

XMRiGUI is free and open-source crypto miner for Linux. It uses XMRig for mining and GTK3 for GUI.

29 Jul 07, 2022
This python module can analyse cryptocurrency news for any number of coins given and return a sentiment. Can be easily integrated with a Trading bot to keep an eye on the news.

Python script that analyses news headline or body sentiment and returns the overall media sentiment of any given coin. It can take multiple coins an

185 Dec 22, 2022
This is a simple Bitcoin non-deterministic wallet address generator coded in Python 3.

This is a simple Bitcoin non-deterministic wallet address generator coded in Python 3. It generates a Private Key in different formats (hex, wif and compressed wif) and corresponding Public Addresses

7 Dec 22, 2022
Tracking (of choice) cryptocurrencies' daily prices and moving average.

Crypto-price-moving_average Tracking (of choice) cryptocurrencies' daily prices and moving average. About Alpha Vantage The Alpha Vantage library (htt

Thong Huynh 2 Jan 22, 2022
Stor is a community-driven green cryptocurrency based on a proof of space and time consensus algorithm.

Stor Blockchain Stor is a community-driven green cryptocurrency based on a proof of space and time consensus algorithm. For more information, see our

Stor Network 15 May 18, 2022
Implementation of Smart Batch Auction for NFT launches on Tezos.

NFT Smart Batch Auction Smart Batch Auctions are an improvement over the traditional first come first serve (FCFS) NFT drops. FCFS design has been in

Anshu Jalan 5 May 06, 2022
Tools for running airdrop and token distribution campaigns on the Solana blockchain.

Overview This repository contains some of the scripts we have used for running our airdrop campaigns and other distributions. Initially, all of these

147 Nov 17, 2022