/twitter-crypto-bot

This is a Twitter bot that tweets about cryptocurrencies prices every certain amount of minutes

Primary LanguageTypeScriptMIT LicenseMIT

Twitter Crypto Bot

This bot tweets about the price variations of any cryptocurrency every certain time interval.

Every coin listed in Binance are supported.

Prices' data is retrieved from the Binance API.

Tweets generated by the bot look like this:

Tweet image

You can achieve this with just one line of code! Simply choose a coin, a time interval between tweets, and that's it!

Crypto bot initialization

📋 Prerequisites

🎉 Let's start!

  • First of all, fork this repository. If you don't know how forking works, check out this guide.
  • Now that you have your own fork of the project, clone your repository to your computer.
  • Go to the Twitter tokens generator and generate the necessary access tokens for this bot.
    • You can skip this step if you already have them.
  • Go to the Candlestick Chart API and subscribe to a plan of your choice. Note that the basic plan will allow you to tweet with charts' images every 20 minutes.
  • Copy your x-rapidapi-key key from the code snippet that you can find in the API page. If you are having trouble finding the RapidAPI key, watch this video.
  • Create a file named .env at the repo's root directory and paste the keys from the previous steps in it (It should look like .env.example).
  • Open your console inside the directory.
  • Run yarn or npm i to install the project's dependencies.
  • Go to the index.ts file and choose the cryptocurrency you want, you can also change the time between tweets. Go to the ⚙️ Bot options section to see how to customize your bot.
  • Finally, run yarn start or npm start and your bot will start running!
  • That's it! You have your own Twitter Crypto Bot!

⚙️ Bot options

Your bot can be customized if you want it to have a different behaviour. The options that it supports right now are:

Crypto bot options

Option Sub option Description Default value Value type
credentials
consumer_key Key you get from your Twitter app. CONSUMER_KEY value in your .env file. String
consumer_secret Secret key you get from your Twitter app. CONSUMER_SECRET value in your .env file. String
access_token Generated access token you get for an specific Twitter user. ACCESS_TOKEN value in your .env file. String
access_token_secret Generated secret access token you get for an specific Twitter user. ACCESS_TOKEN_SECRET value in your .env file. String
decimalsAmount Number of decimal places after the comma of the cryptocurrency price. From 0 to 8 depending on the cryptocurrency price. Positive number
hasHashtags
code If the tweet should contain the coin code as a hashtag or not. E.g. #BTC. true Boolean
name If the tweet should contain the coin name as a hashtag or not. E.g. #Bitcoin. true Boolean
hasComparisons
lastTweet If the tweet should contain the comparison between the current price and the one from 24 hours ago. true Boolean
lastDay If the tweet should contain the comparison between the current price and the one from the last tweet. true Boolean
chartOptions
interval Time interval for each candle.
  • m: Minutes
  • h: Hours
  • d: Days
  • w: Weeks
  • M: Months
1m
  • 1m
  • 3m
  • 5m
  • 15m
  • 30m
  • 1h
  • 2h
  • 4h
  • 6h
  • 8h
  • 12h
  • 1d
  • 3d
  • 1w
  • 1M
limit Amount of candles in the chart 16 Integer. Maximum 1000

When you saw the first example, you might have noticed that the tweet interval was set in minutes. If you want to set the interval to certain amount of hours, minutes, and/or seconds, you can use a time object to explicitly set them.

Set tweet interval options

Option Description Value Type
hours Time interval in hours between tweets. Positive number
minutes Time interval in minutes between tweets. Positive number
seconds Time interval in seconds between tweets. Positive number

As shown in the first example you can also use just a number instead of an object and it will be considered as minutes.

E.g. bot.setTweetInterval(15) is the same as bot.setTweetInterval({ minutes: 15 })

💖 Support the project

If you like what we do and want to encourage us to continue creating stuff, starring and sharing this project would be really appreciated! Also, if you want to support us a little bit more, you can buy us a coffe, or make a BTC tip to the following address: 1E6ZBxA8c32YwJxiWW4ohvm9oVYqqWh5tU

Buy us a coffe

✨ Contributing

Contributions are more than welcome!

We think that you might have great ideas to make this project even better, so if you do, please create a pull request and/or issue following our contribution guidelines.

😃 Authors

📄 License

MIT


This project was made with ❤ and TypeScript