Check out the Issue Explorer
Looking to fund some work? You can submit a new Funded Issue here.
# Token Distributing Twitter Bot for Ocean Protocol’s Testnet
## How can you help?
We want to create a Twitter bot that can help distribute tokens to our testnet users. The starting point will be to set up our [Faucet Server](https://github.com/oceanprotocol/faucet/). You can follow the README.md to get set up. You will be working with Twitter APIs to make a bot that interacts with our faucet server through API calls and by using a **test** [Twitter account](https://twitter.com/TestOcean) that we created.
Here’s how a Twitter user can request for tokens from Ocean.
- A follower of Ocean Protocol’s Twitter page tweets to the account requesting some tokens. For example, user tweets the testnet address with a common phrase - "@TestOcean, requesting test tokens into 0x0000000000000000000000000000000000000000 for the #OceanTestNet". Request for tokens are tied to Twitter accounts to ensure verification and prevent malicious actors from exhausting all available funds or accumulating enough testnet tokens to mount spam attacks.
- The bot then picks up the comment with the wallet address and instructs the faucet server to award a given number (configurable) of testnet tokens to the corresponding address.
- The faucet server will then initiate the transfer and sends back a response. The response can be of 3 types - a) 200 (successfully transferred) b) 503 (service unavailable) which means this account has had tokens transferred to it within the last 24 hours c) 404 - Something went wrong.
- Depending on the response, the Twitter bot needs to send a reply tweet to the user with the appropriate message. If a) 202 - Tweet “@userhandle x tokens have been transferred to your account!” b) 503 - Tweet “@userhandle you’ve already requested for tokens in the last 24 hrs. Only one transfer in 24 hours is allowed. Try again in xxx hours” or c) Tweet “@userhandle something went wrong and we couldn’t transfer tokens to your wallet address. Please check address provided and try again later”.
You may modify these tweets to fit Twitter’s character limits but the nature of the content should be similar.
## What needs to be done?
You will be working with this **test** [Twitter account](https://twitter.com/TestOcean) and will be provided with API access keys and tokens via email once your application has been approved.
Here are some additional tutorials to help with your setup
- How to get started with setting up a Twitter Bot - [Read article](https://codeburst.io/build-a-simple-twitter-bot-with-node-js-in-just-38-lines-of-code-ed92db9eb078).
- [Twitter APIs](https://developer.twitter.com/content/developer-twitter/en.html) and [rules/best practices](https://help.twitter.com/en/rules-and-policies/twitter-rules-and-best-practices)
The bot may be built using Twitter API Libraries for [NodeJS](https://github.com/ttezel/twit) and [Python](https://github.com/tweepy/tweepy). We will require implementation in either of one of these two. Set up [our faucet](https://github.com/oceanprotocol/faucet/) first, and make sure it can interact with the Twitter bot/API.
## We are very happy when
- The README.md file must detail the setup process of the bot with the faucet server..
- You may need to modify how the [faucet server](https://github.com/oceanprotocol/faucet/) request/responses work. Please mention all changes in the README.
- Please mention any other dependencies (in relation to the faucet server). You may share screenshots or any other resources relevant to understanding the setup.
- Test coverage for this server is >= 75%
- Travis job is setup to test and build this server.
You may create a repository for this bounty and provide us the link while entering your final submission.
## Seen this problem before?
Any help solving this is welcome. Feel free to leave any comments and help someone else to solve it. We might airdrop tokens to someone even if not directly completing bounty.
## Questions & Reviews
Pull requests will be reviewed by one of the maintainers or long-term contributors. In case of any additional questions feel free to ask in this thread and we will do our best to add the missing info :)
## Things to know
The bounty lifecycle process including payout will be managed using [Gitcoin](https://gitcoin.co/explorer?network=mainnet&keywords=oceanprotocol&order_by=-web3_created).
We'll be responding to your questions here, but for discussion and clarification we recommend to join also our [Gitter channel](https://gitter.im/oceanprotocol/Lobby) where our tech community is accessible.
In order to see the PROCN balance in your wallet you'll need to reference the related token contract with address _0xf2aabdd898a0139195b2b5da7387d43a45ded254_. If you use a MetaMask plugin you'll find the the exact steps [here](https://metamask.zendesk.com/hc/en-us/articles/360015489011-Managing-ERC20-Tokens).
Lastly, even if it is a contest bounty, we will reward all valuable contributions and efforts. We greatly appreciate the value our open source community brings to Ocean and will always award some tokens to all great contributions! :smiley:
Once the project was reviewed and merged in the master branch, you will receive the reward. PROCN is a Proto-Ocean token. Bounty hunters that earn PROCN will be able to convert them 1:1 to Ocean tokens on network launch (Ocean Token will be valued at at 0.22 EUR on network launch). Network launch is expected to happen by Mar 31, 2019. Until then PROCN will be locked and non-transferrable in the ETH wallet to which it is delivered to.