NFT sales monitoring bot for the Ethereum blockchain. (ERC721, ERC1155)

Overview

GitHub contributors GitHub Workflow Status GitHub issues GitHub pull requests GitHub license Commitizen friendly


Logo

Ethereum-NFT-Sales-Bot

NFT sales monitoring bot for the Ethereum blockchain. (erc721, erc1155)



Table of Contents

Click to expand
  1. Market Coverage
  2. GIF Generator
  3. Live Demo
  4. Getting Started
  5. Configuration
  6. Update
  7. Usage
  8. Run Test
  9. Lint Check
  10. Notify Method
  11. Mindmap
  12. Contributing
  13. Contact
  14. Acknowledgments
  15. Collections
  16. License

Market Coverage

(back to top)

GIF Generator

gif_1 gif_2


(back to top)

Live Demo

Twitter

Discord

(back to top)

Getting Started

Prerequisites

  • Install Node.js version 16.16.0 LTS
    • If you are using nvm (recommended) running nvm use will automatically choose the right node version for you.
  • Alchemy API Key - apply here
  • Etherscan API Key - apply here

Opensea API Key Is Now Optional

  • The bot now use Alchemy as the default NFT API. 🔗 Learn more

  • If you set OPENSEA_API_KEY in the .env file, it will take priority over the Alchemy for NFT API.

Installation

npm install

(back to top)

Configuration

Create an .env file in the root directory of the project with the following contents:

Mandatory

CONTRACT_ADDRESS=
ALCHEMY_API_KEY=
ETHERSCAN_API_KEY=

Optional

OPENSEA_API_KEY=
TWITTER_ENABLED=
TWITTER_API_KEY=
TWITTER_API_SECRET=
TWITTER_ACCESS_TOKEN=
TWITTER_ACCESS_SECRET=
DISCORD_ENABLED=
WEBHOOK_URL=

Multi Monitoring

For monitoring multiple NFTs at the same time, use CONTRACT_ADDRESSES in the .env file.

Example:

CONTRACT_ADDRESSES=["0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D","0x60E4d786628Fea6478F785A6d7e704777c86a7c6"]

If CONTRACT_ADDRESS and CONTRACT_ADDRESSES are both set, CONTRACT_ADDRESSES will take the priority.


🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨

Do not commit/include your .env file in your repository.

🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨 🚨

(back to top)

Update

Run the following command to update the source code:

npm run update

Usage

Run the following command to start the bot:

npm start

To test a certain transaction for debugging purposes, run the following command:

npm run debug -- <transaction-hash>

(back to top)

Run Test

To ensure your configuration(.env) is correct, run the following command:

npm test

The test should take less than 3 minutes to run. If it fails, either APIs are down or your configuration is incorrect.

(back to top)

Lint Check

To format code and fix linting errors, run the following command:

npm run fix

(back to top)

Notify Method

Notification is optional. You can turn it on in the ./.env file by setting the TWITTER_ENABLED or DISCORD_ENABLED value to 1.

For example:

TWITTER_ENABLED=1
DISCORD_ENABLED=1

(back to top)

Twitter

  1. Register Twitter developer account with Elevated access. 🔗 Link

  2. Create a development app with OAuth 1.0a read-write permissions. 🔗 Link

  3. Install Twurl and run following command:

    twurl authorize --consumer-key <your-app-key> --consumer-secret <your-app-secret>
    

    This will return an URL that you should open up in your browser. Authenticate to Twitter, and then enter the returned PIN back into the terminal.

    This should create a file called .twurlrc in your home directory with all the necessary information.

(back to top)

Discord

  1. Open the Discord channel you want to receive sales event notifications.
  2. From the channel menu, select Edit channel.
  3. Select Integrations.
  4. Select Create Webhook.
  5. Enter the name of the bot that will post the message.
  6. Copy the URL from the WEBHOOK URL field.
  7. Click Save.

(back to top)

Mindmap

  • Add NFT Trader
  • Add Sudo Swap
  • Add Sudo Swap OTC

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

For more information on how to contribute, check out the contributing guide.

(back to top)

Contact

kenryu.eth - @kenryu42 - [email protected]

(back to top)

Acknowledgments

(back to top)

Collections

Collections that using this bot.

Open a Pull Request to add your collection below!

Collection Twitter Discord
Murakami.Flowers @MFTMKKUS Murakami.Flowers

(back to top)

LICENSE

This project is MIT licensed.

(back to top)

Comments
  • Cannot read properties of undefined (reading 'length')

    Cannot read properties of undefined (reading 'length')

    Hey I'm trying to test this transaction 0x3c33ba5c1d8e9c37375cf1937ffce0b45e736e3d57c24ef256b4ce50d4f80ece for contract 0x72A94e6c51CB06453B84c049Ce1E1312f7c05e2c and getting this undefined length error

    Running test for tx: 0x3c33ba5c1d8e9c37375cf1937ffce0b45e736e3d57c24ef256b4ce50d4f80ece 14 Wiiides sold on Opensea: Seaport ⚓️ for 0.11309999000000001 ETH https://etherscan.io/txData/0x3c33ba5c1d8e9c37375cf1937ffce0b45e736e3d57c24ef256b4ce50d4f80ece

    TypeError: Cannot read properties of undefined (reading 'length') at tweet (file:///Users/sterlingcrispin/code/ethereum-nft-sales-bot/dist/twitter/tweet.js:50:21) at runApp (file:///Users/sterlingcrispin/code/ethereum-nft-sales-bot/dist/controllers/runApp.js:39:15) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async file:///Users/sterlingcrispin/code/ethereum-nft-sales-bot/dist/app.js:43:13 ➜ ethereum-nft-sales-bot git:(mainorigin)

    opened by sterlingcrispin 7
  • Error when tx.isSweep > 3

    Error when tx.isSweep > 3

    2022-07-31T06:52:47: Error: Given file is not valid, please check its type. 2022-07-31T06:52:47: at getFileHandle (/www/wwwroot/wBot/ethereum-nft-sales-bot/node_modules/twitter-api-v2/dist/v1/media-helpers.v1.js:61:15) 2022-07-31T06:52:47: at TwitterApiv1.getUploadMediaRequirements (/www/wwwroot/wBot/ethereum-nft-sales-bot/node_modules/twitter-api-v2/dist/v1/client.v1.write.js:352:69) 2022-07-31T06:52:47: at TwitterApiv1.uploadMedia (/www/wwwroot/wBot/ethereum-nft-sales-bot/node_modules/twitter-api-v2/dist/v1/client.v1.write.js:285:78) 2022-07-31T06:52:47: at tweet (file:///www/wwwroot/wBot/ethereum-nft-sales-bot/twitter/tweet.js:43:35) 2022-07-31T06:52:47: at runApp (file:///www/wwwroot/wBot/ethereum-nft-sales-bot/controllers/runApp.js:63:15) 2022-07-31T06:52:47: at runMicrotasks () 2022-07-31T06:52:47: at processTicksAndRejections (node:internal/process/task_queues:96:5) 2022-07-31T06:52:47: at async Subscription. (file:///www/wwwroot/wBot/ethereum-nft-sales-bot/app.js:49:17)

    opened by delta0800 7
  • Feature/svg conversion

    Feature/svg conversion

    Hey !

    Your repo is great! Before your recent nft-trader refactor I had a branch that added SVG support, but something no longer works and I'm not sure why. The GIF's just return 'Content Not Yet Available' from the image.js code I added for checkSVG. I was hoping you could take a look at this branch / PR and help figure it out.

    I'm not a proper web developer so maybe you can spot something easy I messed up? Maybe I'm not properly waiting for the image data to get returned or something? It works for single images so I'm not sure whats up, something about it running in a loop is maybe breaking the async wait pattern, or I'm just not using it right somewhere

    my contract I'm using to debug SVGs on is 0x72a94e6c51cb06453b84c049ce1e1312f7c05e2c

    An example GEM transaction sweep is 0x09bee04fec6b1011b30c796503e2cbf8e32bfbea3611e79be8b23a688c40f6d0

    An example single OpenSea transaction is 0x694603515145b7d8c8e1be13315fe00d4e0f6f3fd6008a9fd5b72933e6e8b18f

    opened by sterlingcrispin 3
  • enhancement: parseSudoswap.ts

    enhancement: parseSudoswap.ts

    I caught a transaction type not being processed robustSwapETHForSpecificNFTs tested it against a live transaction and it works 0x98694c9db3066a0831a5d5438e965eb58f34ea197d6ded3dc070d592d2fd0967

    opened by sterlingcrispin 2
  • added heroku support

    added heroku support

    Description of changes

    Added Procfile, moved dotenv to dependencies because Heroku does not install devDependencies & updated README

    Test

    Tested it with Heroku, and both Discord and Twitter works seamlessly

    opened by 0xSooki 2
  • Update initialize.ts

    Update initialize.ts

    sweep should be false by default in initialize.ts because you can use Gem to buy 1 NFT, causing the GIF generation logic to fail if sweep is on by default

    I added checking to see if isSweep was true or false in the integration tests as well

    opened by sterlingcrispin 1
  • feature request: rate limiting

    feature request: rate limiting

    Hey I set up the bot for my friends project https://opensea.io/collection/proofofpepe but it did like 100E+ volume in a few hours and twitter's API rate limited it to hell. It probably also got rate limited by etherscan too.

    It would be great if in the .env file there was a way to define some rate limits to keep the bot throttled and not get shut down

    opened by sterlingcrispin 0
  • Gem swap with zero value

    Gem swap with zero value

    Hey I'm seeing a transaction with a value of 0 even though it shouldn't be, not clear what the problem is

    tx 0x091fb66ab1c522b613cc06e9baf870951c71a220d013af8eb9227d98c6f8cdd8

    will try to figure this out on my own if I can but the repo has changed so much I'm not sure where its failing.

    help wanted 
    opened by sterlingcrispin 1
Releases(v0.1.0)
  • v0.1.0(Aug 19, 2022)

    What's Changed

    • moved dotenv by @0xSooki in https://github.com/kenryu42/ethereum-nft-sales-bot/pull/2
    • Modified GitHub workflows etc by @kenryu42 in https://github.com/kenryu42/ethereum-nft-sales-bot/pull/11
    • Fix/sweep to agg by @sterlingcrispin in https://github.com/kenryu42/ethereum-nft-sales-bot/pull/12

    New Contributors

    • @0xSooki made their first contribution in https://github.com/kenryu42/ethereum-nft-sales-bot/pull/2
    • @kenryu42 made their first contribution in https://github.com/kenryu42/ethereum-nft-sales-bot/pull/11
    • @sterlingcrispin made their first contribution in https://github.com/kenryu42/ethereum-nft-sales-bot/pull/12

    Full Changelog: https://github.com/kenryu42/ethereum-nft-sales-bot/commits/v0.1.0

    Source code(tar.gz)
    Source code(zip)
Owner
null
Yet another library for generating NFT artwork, uploading NFT assets and metadata to IPFS, deploying NFT smart contracts, and minting NFT collections

eznft Yet another library for generating NFT artwork, uploading NFT assets and metadata to IPFS, deploying NFT smart contracts, and minting NFT collec

null 3 Sep 21, 2022
A Twitter bot that tweets all ERC-721 NFT sales for a given contract 🤖

NFT Sales Twitter Bot ?? This was made to succeed my Opensea Sales Twitter Bot repo; while relying on the OpenSea Events API is simpler, it doesn't in

Daniel Griffin 73 Jan 2, 2023
Changd is a open source web monitoring application for monitoring visual site changes using screenshots, XPath's or API's.

Changd is a open source web monitoring application and a free alternative to ChangeTower.com, Hexowatch.com, and other SaaS-based solutions. Changd ca

Paul Aschmann 110 Jan 3, 2023
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Lazy minting of ERC721 NFTs using EIP712 standard for typed, structured data. ✨

ERC721 - Signature minting Lazy minting of ERC721 NFTs using EIP712 standard for typed, structured data. ✨ How it works Lazy minting or Signature mint

Sunrit Jana 21 Oct 20, 2022
🐲 Epic NFTs [UI] - Proyecto que te permitirá conectar tu billetera y acuñar un NFT, podrás revender el NFT en OpenSea. El NFT en sí se puede personalizar

?? Epic NFTs [UI] El proyecto se encuentra deployado en Vercel para que puedan verlo e interactuar con él, toda crítica o comentario se agradece, pued

Braian D. Vaylet 17 Oct 22, 2022
Fullstack Dynamic NFT Mini Game built using 💎 Diamond Standard [EIP 2535] 🏃‍♀️Players can use Hero NFT to battle against Thanos ⚔ Heroes can be Healed by staking their NFT 🛡

?? Fullstack Dynamic NFT Mini Game ?? ?? Using Diamond Standard Play On ?? ?? ⏩ http://diamond-dapp.vercel.app/ Project Description ?? Fullstack Dynam

Shiva Shanmuganathan 21 Dec 23, 2022
NFT Marketplace framework to build standalone NFT marketplace or inApp/inGame NFT marketplace

NFT Marketplace This project is a decentalized NFT Marketplace framework which is to be the baseline for you to build standalone NFT marketplace or in

Reddio, inc. 14 Dec 19, 2022
Ethereum NFT minting bot 🍌 🔥

Mineth – Open source Ethereum bot for minting NFTs. This repository provides a code for deploying it on server and calling from your local network. Fo

Daniil Korolev 2 Aug 6, 2022
Your Ethereum control panel. Interact with smart contracts on Ethereum.

etherfunk Your Ethereum control panel. Interact with smart contracts on Ethereum. ?? https://etherfunk.io ?? Devleopment First, run the development se

Tom Quirk 23 Sep 24, 2022
👕 The project is an E-Commerce called DevShop that simulates a sales site which has men's and women's clothing, jewelry and electronics.

DEVSHOP • E-COMMERCE O projeto é um E-Commerce chamado DevShop que simula um site de vendas a qual possui roupas masculinas, femininas, joalherias e e

Kayke Alves Fujinaka 18 Sep 19, 2022
Web application that manages your sales team efficiently.

Sales Incentive Management System Overview • Entities • APIs • Demo • Application Properties • Development • Build Overview Problem Statement Creating

Tarun Gowda 20 Nov 28, 2022
complete laravel 9 pos sales project - برنامج ادارة المبيعات والمخازن والمشتريات والحسابات وخطوط الانتاج لارافيل 9 ❤ لاتنسونا من صالح الدعاء

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

null 49 Jan 2, 2023
A comprehensive collection of useful tools developed with the help of Ethers.js to interact with the Ethereum Blockchain to develop great DeFi apps as quickly and easily as possible.

hudi-packages-ethersfactory How to install Installing with npm For more information on using npm check out the docs here. npm i @humandataincome/ether

HUDI 6 Mar 30, 2022
Multi-sig wallet for the Ethereum blockchain.

Ethereum Multi-sig Wallet See it live here Prerequisites Follow this guide to create an Ethereum wallet and switch to the Rinkeby Test Network Send yo

Spencer Miller 8 Feb 26, 2022
chain-syncer is a module which allows you to synchronize your app with any ethereum-compatible blockchain/contract state. Fast. Realtime. Reliable.

Chain Syncer Chain Syncer is a JS module which allows you to synchronize your app with any ethereum-compatible blockchain/contract state. Fast. Realti

Miroslaw Shpak 10 Dec 15, 2022
An Ethereum-compatible blockchain with a giant capacity for storage

goliath The Goliath blockchain is an Ethereum L2 with a giant capacity. For devs, it means you'll never need another chain. No bridges, no new languag

Liam Zebedee 17 Dec 23, 2022