Easily transfer money between team members on your Slack channel.
- With a single message, send and receive Bitcoins
- Every member has his own wallet
- Every tip is a real Bitcoin transaction, recorded on the blockchain
- Self hosted so you are always in control of your coins
If you want to have a TipBot for your Slack team without having to host the bot yourself,
You can setup a hosted TipBot (by BlockTrail): https://tipbot.blocktrail.com
- Grab a free API key from BlockTrail here
- Add a bot integration to Slack here
- Make sure you copy the Slack API token
git clone https://github.com/blocktrail/slack-tipbot
cd slack-tipbot
npm install
Change the YOUR_SLACK_TOKEN
, YOUR_API_KEY
, YOUR_API_SECRET
, YOUR_VERY_VERY_SECRET_SECRET
in the below snippet
to the API key and secret, slack token and some random secret.
DEBUG="tipbot:*" node bot.js \
--slack-token="YOUR_SLACK_TOKEN" \
--blocktrail-apikey="YOUR_API_KEY" \
--blocktrail-apisecret="YOUR_API_SECRET" \
--secret="YOUR_VERY_VERY_SECRET_SECRET"
You can also use ENV vars instead of arguments:
TIPBOT_SLACK_TOKEN
,TIPBOT_BLOCKTRAIL_APIKEY
,TIPBOT_BLOCKTRAIL_APISECRET
,TIPBOT_SECRET
You should use something like forever or supervisord to keep it running on a server,
but using a screen
does the job too xD
You can add --testnet
(or ENV var TIPBOT_TESTNET="true"
) to make the bot run on testnet instead of mainnet (for development or example).
The value for YOUR_VERY_VERY_SECRET_SECRET
is used to create passwords for the wallets of the users of the tipbot.
If someone gets a hold of your API key and secret, then YOUR_VERY_VERY_SECRET_SECRET will serve as an extra security measure, to prevent the coins from being stolen.
You can control / communicate with the tipbot by sending the bot a direct message or mentioning its name in a channel.
The tipbot responds to certain 'trigger words' in a sentence, so you can wrap the trigger word in a nice looking sentence and it will work.
For example, to trigger the help
command you can could say hey @tipbot can you help me figure out how tipping works
and the help
in that sentence will trigger displaying the help information.
eg; hey @tipbot can you show me the help info!
eg; hey @tipbot can you please tell me my balance
eg; @tipbot please send 0.1 BTC to @bob
will send 0.1 BTC to @bob.
the <value + unit>
can be 0.1 BTC
or 10000000 Satoshi
this command has a few aliases which you can use; give
and sent
eg; @tipbot can you give @bob 0.1 BTC
or @tipbot I'd like you to send @bob 0.1 BTC
eg; @tipbot I want to receive 0.1 BTC from @bob
will request 0.1 BTC from @bob.
after you've requested coins from someone that person will be asked if that is OK, replying with yes
, ok
or sure
will make the transaction happen.
the <value + unit>
can be 0.1 BTC
or 10000000 Satoshi
this command has a few aliases which you can use; ask
, demand
, deserve
, send me
, give me
, gimme
and owes me
eg; @tipbot I demand 0.1 BTC from @bob for making such a cool bot
or @tipbot @bob please gimme 0.1 BTC for lunch
eg; @tipbot I'd like to deposit some BTC
eg; @tipbot I want to withdraw 0.5 BTC to 1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp
after you've requested the withdraw the bot will confirm with you if it's OK, replying with yes
, ok
or sure
will make the transaction happen.
By default the tipbot joins the default #general
channel, you can invite him into other channels just like you invite normal users into channels.
The tipbot is in full control of the coins (BlockTrail can't access the coins).
When you invite the tipbot into a channel it can see all the messages in the channel, keep this in mind if the tipbot is hosted by that one intern that has left your company for a competitor ;-)
- withdraw EVERYTHING
- transaction history
- better way of dealing with errors
- add option for users to set a custom password (would require them to give the password or a browser extension to sign transactions)
- think of a way to deal with deleted users with BTC balance
- respond to being the receiver of the action
- use the
Trigger
class for all triggers, not just temporary ones