Build your first discord bot to fetch ethereum NFTs (including ENS) without writing code

Build your first discord bot to fetch ethereum NFTs (including ENS) without writing code

Overview

Welcome to the tutorial on integrating your ENS address and Ethereum address with Discord to showcase your NFT collection! .

By following the simple steps outlined in this guide, you will be able to seamlessly access and display your NFTs directly on Discord, increasing your visibility and engagement within the community.

Our goal is to provide you with a comprehensive understanding of the integration process, enabling you to navigate it smoothly and enjoy the benefits of sharing your NFTs with other Discord users effortlessly.

Whether you're an avid collector, an artist, or simply curious about the NFT space, this tutorial is designed to equip you with the necessary tools to exhibit your digital assets in a convenient and visually appealing manner on Discord.

What We Will Do

  • Configuring our bot service to retrieve data from QuickNode.

What You Will Need

What is QuickNode?

QuickNode offers access to nodes for various blockchain networks:

Developers and businesses can easily set up and manage their blockchain nodes without having to worry about the complexity of maintaining the infrastructure.

QuickNode provides reliable and high-performance nodes that are always up-to-date with the latest software versions.

In addition to running blockchain nodes, QuickNode also provides:

  • Tools for monitoring and managing your infrastructure.

  • APIs for building and deploying decentralized applications.

  • And more useful tools for your web3 journey!

With QuickNode, developers can focus on building their applications and not worry about the underlying infrastructure.

What is Discord?

Discord is a popular communication platform that offers voice, video, and text chat capabilities. It is widely used by millions of people aged 13 and above as a means to connect with their communities and friends. Whether you're looking to have casual conversations, organize gaming sessions, collaborate on projects, or simply stay in touch with like-minded individuals, Discord provides a versatile platform for various forms of communication and social interaction.

Creation of our discord bot

To activate your Discord bot, you will need two specific values: CLIENT_PUBLIC_KEY and BOT_TOKEN, please save these values, we will need them in this section: "Creating a service to retrieve information for our Discord bot".

Here are the steps to obtain these values:

  1. Go to the Discord Developer Portal website. You can access it by visiting discord.com/developers/applications and logging in with your Discord account.

  2. Once you are logged in, click on the "New Application" button to create a new application for your bot. Give your application a name that represents your bot.

    Creating a discord bot

  3. In the left sidebar, select "Bot" under the settings for your application.

  4. Under the "Token" section, you will find your BOT_TOKEN.

  5. Click on the "Reset Token" button.

  6. This token acts as your bot's authentication to the Discord API. Keep this token secure and do not share it publicly.

    Discord Bot Token

  7. To obtain the CLIENT_PUBLIC_KEY, you need to go to the General Information setting. Search for "Public Key" and copy the value.

    Discord Public Key

  8. After that, you need to invite your bot to your discord, to get the invitation, go to the "OAuth2" section and search for the "URL Generator" sub-section.

  9. In this section, you need to check the "bot" and "applications.commands" options. After that, you can see the Bot Permissions, and check the "Administrator" option.

    Generating an invitation to invite our Discord bot to our community

  10. At the bottom, you need to copy this invitation URL.

  11. Discord invitation URL

    In consequence, you need to copy the generated URL and paste it into your browser, and press enter:

  12. Adding our discord bot to our community

    Granting permission to our bot

    You will see a similar screen to the previous image and finally, you can see your bot on your community.

    Bot as Member in our community

  13. To retrieve the information from our discord bot, you need to create these two commands:

    1. /info <address>

      1. You can retrieve the information to retrieve the NFTs associated with your wallet.

        Results of the info command

    2. /retrieve <address> <page>

      1. You can retrieve the information from your nfts with the next parameters:

        1. address: The address you would like to retrieve your nfts.

        2. page: Each page has a limit to seeing 10 nfts, because discord has some limitations on returning messages.

          Results of the retrieve command

  14. To create the commands, you need to go to:
    https://www.site24x7.com/tools/restapi-tester.html

    1. Creating the command "/info":

      Creating the command "/info" on https://www.site24x7.com/tools/restapi-tester.html

      1. In "Method", you need to change the option to "POST"

      2. In "Rest API Endpoint", you need to copy this URL and change the "Application ID" for the parameter returned in the following steps above:

        1. [discord.com/api/v8/applications/[APPLICATIO.. ID]/commands
      3. In "Post Data" you need to check the "JSON" parameter.

        1. Verify if the "raw" option is selected.

        2. Copy this code and paste it as in the image above.

           {
               "name": "info",
               "description": "Get information about the items from your address",
               "options": [
                   {
                       "name": "address",
                       "description": "Address",
                       "type": 3,
                       "required": true
                   }
               ]
           }
          
      4. In "Custom Headers" you need to check the "Yes" parameter.

        1. You will see two fields "Name" and "Value".

          1. In Name, write "Authorization".

          2. In Value, Bot <Token>.

            1. You need to change it with the parameter returned in the steps mentioned above.
      5. Click on the "Test again" button.

      6. To view the response to this petition, you can scroll down.

        Response body from "/info" command

    2. Creating the command "/retrieve":

      Creating the command "/retrieve" on https://www.site24x7.com/tools/restapi-tester.html

      1. In "Method", you need to change the option to "POST"

      2. In "Rest API Endpoint", you need to copy this URL and change the "Application ID" for the parameter returned in the following steps above:

        1. [discord.com/api/v8/applications/[APPLICATIO.. ID]/commands
      3. In "Post Data" you need to check the "JSON" parameter.

        1. Verify if the "raw" option is selected.

        2. Copy this code and paste it as in the image above.

           {
               "name": "retrieve",
               "description": "Retrieve your nfts from Ethereum",
               "options": [
                   {
                       "name": "address",
                       "description": "Address",
                       "type": 3,
                       "required": true
                   },
                           {
                       "name": "page",
                       "description": "Set the number of page",
                       "type": 3,
                       "required": true
                   }
               ]
           }
          
      4. In "Custom Headers" you need to check the "Yes" parameter.

        1. You will see two fields "Name" and "Value".

          1. In Name, write "Authorization".

          2. In Value, Bot <Token>.

            1. You need to change it with the parameter returned in the steps mentioned above.
      5. Click on the "Test again" button.

      6. To view the response to this petition, you can scroll down.

        Response body from "/retrieve" command

Obtaining information from QuickNode

Obtaining QUICKNODE_API_KEY value:

To detect if the user address contains an ENS domain, we need to copy the API KEY from the Graph API section.

Dashboard from QuickNode Graph API

Obtaining QUICKNODE_RPC_URL value:

Screenshot of the QuickNode platform for creating your RPC endpoint

Screenshot of the QuickNode platform to select the desired blockchain to obtain our RPC

Screenshot of the QuickNode platform to select the desired version of the blockchain

Screenshot of the QuickNode platform where we activate the nft api v2 bundle to retrieve the information from our nfts

Screenshot of the QuickNode platform where we install the nft plugin

Screenshot of the QuickNode platform where we the plugin is activated

Screenshot of the QuickNode platform to copy our RPC from the desired blockchain

Creating a service to retrieve information for our Discord bot

You need to go to Render:

Render Dashboard

Afterward, you need to click on "New". In the subsequent steps, you will need to click on the 'Web Service' option.

WebService option on render.com

You will see this dashboard:

Dashboard from render.com to obtain the code from the bot, and subsequently, perform the necessary configuration tasks

In the Public Git Repository section, you can find a white box where you need to paste this code and click on the "Continue" button:

https://github.com/irwingtello/NFTDiscordEthereumBot

Configuring environment variables on render.com

You need to change these values:

  • In Name, you need to write a name for the service.

  • In Build Command, you need to write the next command "npm install".

After defining the above values, we need to scroll down and click on the "Advanced" button.

You need to add the following environment variables:

  • QUICKNODE_API_KEY.

  • QUICKNODE_RPC_URL.

  • CLIENT_PUBLIC_KEY.

  • BOT_TOKEN.

Configuring our bot environment variables

Afterward, click on the "Create Web Service" button and you will see the next screen.

Deploying bot service on render.com

Congratulations!. You now have your first bot service online. We need to copy the URL for this bot and paste it into our bot configuration on Discord.

In my case, this is my URL:

https://ethereumbot.onrender.com

Setting up our service on Discord

I will save you time!, you need to go to the Discord Developer Portal:

https://discord.com/developers/applications/

Click on the name of your Bot.

Discord Developer Portal

After that, you need to go to the "General Information" section and change the "Interactions Endpoint URL".

You need to paste the URL generated by render.com and add the path "/interactions"

Example:
https://ethereumbot.onrender.com/interactions

Discord Developer Portal, General Information

In the consequent step, you need to click the button "Save changes".

After that, you can use your bot in your community!

Exploring your first NFT Discord Bot on your community

Go to any channel on your discord and write this first command: /info, to know how many nfts you have.

/info command from our Discord Bot

After that, you will see this result:

Results from our /info command

Now you have the total pages where you can find your nft data, then you can use this command /retrieve:

/retrieve command from our Discord Bot

As a result, you will be able to see your NFTs:

Results from our /retrieve command

Conclusion

Congratulations on making it to the end of this tutorial! .

You have now learned how to integrate your ENS and Ethereum addresses with Discord to showcase your NFTs.

I hope you found this tutorial informative and easy to follow.

We ❤️ Feedback!

If you have any feedback or questions on this guide, let us know. Or, feel free to reach out to us via Twitter or our Discord community server.

We’d love to hear from you!

Author: Irwing Tello
Discord: discord.com/invite/ADjtsHVreT
Twitter: twitter.com/irwingtello
LinkedIn: linkedin.com/in/irwingtello
Email:
Website: dfhcommunity.com
Youtube: youtube.com/@irwingtellomx

You can support my work here:
buymeacoffee.com/irwingtello

BTC: 34kXK9CpTJP1PyHKw2kUD2bt6rtGcG5CHY
EVM Address: 0x8B98F8Ff69d2A720120eD6C71A9Bc5072b8Eb46D
Solana: Ey9oVFHW79giacRZaKxigYjeihMsY7ox8jxc7Hp1sJmS

Did you find this article valuable?

Support Irwing Tello by becoming a sponsor. Any amount is appreciated!