opensea-activity-bot
opensea-activity-bot copied to clipboard
A bot that shares new OpenSea events for a collection to Discord and Twitter.
opensea-activity-bot

A bot that shares new OpenSea events for a collection to Discord and Twitter.
Designed to handle multiple output configurations, like a Discord activity feed and a Twitter sales feed.
Originally developed for @dutchtide's 𝕄𝕚𝕕𝕟𝕚𝕘𝕙𝕥 夏季 𝔹𝕣𝕖𝕖𝕫𝕖 collection.
An OpenSea API key is needed - create one in your account.
To run multiple instances of this bot at once check out bot-runner. Also check out discord-nft-embed-bot.
Setup
Env
Please define the env variables outlined in this section for the repository to work as intended.
Valid event types
Valid string values for event types to react on are:
listingoffersaletransfer
Project-specific
CHAIN- Value from OpenSea Supported Chains. Defaults to
ethereum.
- Value from OpenSea Supported Chains. Defaults to
TOKEN_ADDRESS
APIs
OPENSEA_API_TOKEN
To share on Discord
DISCORD_EVENTS- The Discord channel ID with a comma separated list of event types for the bot to send through discord
- e.g.
662377002338091020=order,sale
- e.g.
- For multiple channels separate with an ampersand (&)
- e.g.
662377002338091020=order&924064011820077076=sale,transfer
- e.g.
- The Discord channel ID with a comma separated list of event types for the bot to send through discord
DISCORD_TOKEN- To get your
DISCORD_TOKEN, create a Discord app. Create a bot with the permissions:Send MessagesandEmbed Links. Then add your bot to your server. - The
DISCORD_TOKENlooks like this:OTE5MzY5ODIyNzEyNzc5NzUz.YBuz2g.x1rGh4zx_XlSNj43oreukvlwsfw
- To get your
If your discord bot is not able to post messages ensure it is added to the channels you've specified and it has the permissions to Send Messages and Embed Links.
To tweet
TWITTER_EVENTS- Comma separated list of event types for the bot to tweet
- e.g.
sale,transfer
Create an application in the Twitter Developer Platform and provide:
TWITTER_CONSUMER_KEYTWITTER_CONSUMER_SECRETTWITTER_ACCESS_TOKENTWITTER_ACCESS_TOKEN_SECRET
Ensure your key is created with "write" permissions, the default key may be "read" only. If that happens you will get an error when trying to tweet; you can regenerate and provide the updated key.
Optional
OPENSEA_BOT_INTERVAL- Number of seconds interval for the bot to run (default: 60)
QUERY_LIMIT- Limit for the OpenSea Events query (default: 50)
MIN_OFFER_ETH- Offers or bids less than this amount will be ignored (default: 0)
TWITTER_PREPEND_TWEET- Message to add to start of tweet, such as a hashtag
TWITTER_APPEND_TWEET- Message to add to end of tweet, such as a hashtag
Run
yarn start
Running on a server
I recommend to use DigitalOcean over Heroku for improved stability. Heroku servers can restart (cycle) which can lead to duplicate posts since the ephemeral disk is lost.
My preferred setup is a $5/month Basic Droplet with Ubuntu. Install Node v16 and yarn, clone this repo, cd into it, run yarn, install pm2 with yarn global add pm2, set env vars, run pm2 start yarn -- start. Monitor with pm2 list and pm2 logs. Add log rotation module to keep default max 10mb of logs with pm2 install pm2-logrotate. To respawn after reboot, set your env vars in /etc/profile, then run pm2 startup and pm2 save.
Support this project by using the referral badge below: