mirror of
https://github.com/jwinterm/groestltip.git
synced 2026-10-28 06:38:35 +01:00
129 lines
7.9 KiB
Markdown
129 lines
7.9 KiB
Markdown
# Reddit ALTcointip bot
|
|
|
|
## Introduction
|
|
|
|
For introduction to and use of ALTcointip bot, see __http://www.reddit.com/r/ALTcointip/wiki/index__
|
|
|
|
## Getting Started
|
|
|
|
>**NEW: See [altcointip-chef](https://github.com/vindimy/altcointip-chef) for Chef-automated installation and configuration of ALTcointip bot.**
|
|
|
|
### Python Dependencies
|
|
|
|
The following Python libraries are necessary to run ALTcointip bot:
|
|
|
|
* __jinja2__ (http://jinja.pocoo.org/)
|
|
* __pifkoin__ (https://github.com/dpifke/pifkoin)
|
|
* __praw__ (https://github.com/praw-dev/praw)
|
|
* __sqlalchemy__ (http://www.sqlalchemy.org/)
|
|
* __yaml__ (http://pyyaml.org/wiki/PyYAML)
|
|
|
|
You can install `jinja2`, `praw`, `sqlalchemy`, and `yaml` using `pip` (Python Package Index tool) or a package manager in your OS. For `pifkoin`, you'll need to copy or symlink its "python" subdirectory to `src/ctb/pifkoin`.
|
|
|
|
### Database
|
|
|
|
Create a new MySQL database instance and run included SQL file [altcointip.sql](altcointip.sql) to create necessary tables. Create a MySQL user and grant it all privileges on the database. If you don't like to deal with command-line MySQL, use `phpMyAdmin`.
|
|
|
|
### Coin Daemons
|
|
|
|
Download one or more coin daemon executable. Create a configuration file for it in appropriate directory (such as `~/.mycoin/mycoin.conf` for Litecoin), specifying `rpcuser`, `rpcpassword`, `rpcport`, and `server=1`, then start the daemon. It will take some time for the daemon to download the blockchain, after which you should verify that it's accepting commands (such as `mycoind getinfo` and `mycoind listaccounts`).
|
|
|
|
### Reddit Account
|
|
|
|
You should create a dedicated Reddit account for your bot. Initially, Reddit will ask for CAPTCHA input when bot posts a comment or message. To remove CAPTCHA requirement, the bot account needs to accumulate positive karma.
|
|
|
|
### Configuration
|
|
|
|
Copy included set of configuration files [src/conf-sample/](src/conf-sample/) as `src/conf/` and edit `reddit.yml`, `db.yml`, `coins.yml`, and `regex.yml`, specifying necessary settings.
|
|
|
|
Most configuration options are described inline in provided sample configuration files.
|
|
|
|
### Running the Bot
|
|
|
|
1. Ensure MySQL is running and accepting connections given configured username/password
|
|
1. Ensure each configured coin daemon is running and responding to commands
|
|
1. Ensure Reddit authenticates configured user. _Note that from new users Reddit will require CAPTCHA responses when posting and sending messages. You will be able to type in CAPTCHA responses when required._
|
|
1. Execute `_start.sh` from [src](src/) directory. The command will not return for as long as the bot is running.
|
|
|
|
Here's the first few lines of DEBUG-level console output during successful initialization.
|
|
|
|
user@host:/opt/altcointip/altcointip/src$ ./_start.sh
|
|
INFO:cointipbot:CointipBot::init_logging(): -------------------- logging initialized --------------------
|
|
DEBUG:cointipbot:CointipBot::connect_db(): connecting to database...
|
|
INFO:cointipbot:CointipBot::connect_db(): connected to database altcointip as altcointip
|
|
DEBUG:cointipbot:CtbCoin::__init__(): connecting to Peercoin...
|
|
DEBUG:bitcoin:Read 5 parameters from /opt/altcointip/coins/ppcoin/ppcoin.conf
|
|
DEBUG:bitcoin:Making HTTP connection to 127.0.0.1:19902
|
|
INFO:cointipbot:CtbCoin::__init__():: connected to Peercoin
|
|
INFO:cointipbot:Setting tx fee of 0.010000
|
|
DEBUG:bitcoin:Starting "settxfee" JSON-RPC request
|
|
DEBUG:bitcoin:Got 36 byte response from server in 4 ms
|
|
DEBUG:cointipbot:CtbCoin::__init__(): connecting to Primecoin...
|
|
DEBUG:bitcoin:Read 5 parameters from /opt/altcointip/coins/primecoin/primecoin.conf
|
|
DEBUG:bitcoin:Making HTTP connection to 127.0.0.1:18772
|
|
INFO:cointipbot:CtbCoin::__init__():: connected to Primecoin
|
|
INFO:cointipbot:Setting tx fee of 0.010000
|
|
DEBUG:bitcoin:Starting "settxfee" JSON-RPC request
|
|
DEBUG:bitcoin:Got 36 byte response from server in 1 ms
|
|
DEBUG:cointipbot:CtbCoin::__init__(): connecting to Megacoin...
|
|
DEBUG:bitcoin:Read 5 parameters from /opt/altcointip/coins/megacoin/megacoin.conf
|
|
DEBUG:bitcoin:Making HTTP connection to 127.0.0.1:17950
|
|
INFO:cointipbot:CtbCoin::__init__():: connected to Megacoin
|
|
INFO:cointipbot:Setting tx fee of 0.010000
|
|
DEBUG:bitcoin:Starting "settxfee" JSON-RPC request
|
|
DEBUG:bitcoin:Got 36 byte response from server in 1 ms
|
|
DEBUG:cointipbot:CtbCoin::__init__(): connecting to Litecoin...
|
|
DEBUG:bitcoin:Read 5 parameters from /opt/altcointip/coins/litecoin/litecoin.conf
|
|
DEBUG:bitcoin:Making HTTP connection to 127.0.0.1:19332
|
|
INFO:cointipbot:CtbCoin::__init__():: connected to Litecoin
|
|
INFO:cointipbot:Setting tx fee of 0.020000
|
|
DEBUG:bitcoin:Starting "settxfee" JSON-RPC request
|
|
DEBUG:bitcoin:Got 36 byte response from server in 2 ms
|
|
DEBUG:cointipbot:CtbCoin::__init__(): connecting to Namecoin...
|
|
DEBUG:bitcoin:Read 5 parameters from /opt/altcointip/coins/namecoin/namecoin.conf
|
|
DEBUG:bitcoin:Making HTTP connection to 127.0.0.1:18336
|
|
INFO:cointipbot:CtbCoin::__init__():: connected to Namecoin
|
|
INFO:cointipbot:Setting tx fee of 0.010000
|
|
DEBUG:bitcoin:Starting "settxfee" JSON-RPC request
|
|
DEBUG:bitcoin:Got 36 byte response from server in 1 ms
|
|
DEBUG:cointipbot:CtbCoin::__init__(): connecting to Bitcoin...
|
|
DEBUG:bitcoin:Read 5 parameters from /opt/altcointip/coins/bitcoin/bitcoin.conf
|
|
DEBUG:bitcoin:Making HTTP connection to 127.0.0.1:18332
|
|
INFO:cointipbot:CtbCoin::__init__():: connected to Bitcoin
|
|
INFO:cointipbot:Setting tx fee of 0.000100
|
|
DEBUG:bitcoin:Starting "settxfee" JSON-RPC request
|
|
DEBUG:bitcoin:Got 36 byte response from server in 1 ms
|
|
DEBUG:cointipbot:CtbExchange::__init__(): initialized exchange crypto-trade.com
|
|
DEBUG:cointipbot:CtbExchange::__init__(): initialized exchange www.bitstamp.net
|
|
DEBUG:cointipbot:CtbExchange::__init__(): initialized exchange bter.com
|
|
DEBUG:cointipbot:CtbExchange::__init__(): initialized exchange blockchain.info
|
|
DEBUG:cointipbot:CtbExchange::__init__(): initialized exchange campbx.com
|
|
DEBUG:cointipbot:CtbExchange::__init__(): initialized exchange vircurex.com
|
|
DEBUG:cointipbot:CtbExchange::__init__(): initialized exchange pubapi.cryptsy.com
|
|
DEBUG:cointipbot:CtbExchange::__init__(): initialized exchange btc-e.com
|
|
DEBUG:cointipbot:CointipBot::connect_reddit(): connecting to Reddit...
|
|
INFO:cointipbot:CointipBot::connect_reddit(): logged in to Reddit as ALTcointip
|
|
...
|
|
|
|
ALTcointip bot is configured by default to append INFO-level log messages to `logs/info.log`, and WARNING-level log messages to `logs/warning.log`, while DEBUG-level log messages are output to the console.
|
|
|
|
### Cron: Backups
|
|
|
|
Backups are very important! The last thing you want is losing user wallets or record of transactions in the databse.
|
|
|
|
There are three simple backup scripts included that support backing up database, wallets, and configuration files to local directory and (optionally) to a remote host with `rsync`. Make sure to schedule regular backups with cron and test whether they are actually performed. Example cron configuration:
|
|
|
|
0 8,20 * * * cd /opt/altcointip/altcointip/src && python _backup_db.py ~/backups
|
|
0 9,21 * * * cd /opt/altcointip/altcointip/src && python _backup_wallets.py ~/backups
|
|
0 10 * * * cd /opt/altcointip/altcointip/src && python _backup_config.py ~/backups
|
|
|
|
### Cron: Statistics
|
|
|
|
ALTcointip bot can be configured to generate tipping statistics pages (overall and per-user) and publish them using subreddit's wiki. After you configure and enable statistics in configuration, add the following cron job to update the main statistics page periodically:
|
|
|
|
0 */3 * * * cd /opt/altcointip/altcointip/src && python _update_stats.py
|
|
|
|
### What If I Want To Enable More Cryptocoins Later?
|
|
|
|
If you want to add a new cryptocoin after you already have a few registered users, you need to retroactively create the new cryptocoin address for users who have already registered. See [src/_add_coin.py](src/_add_coin.py) for details.
|