實作 Discord 機器人取得 NFT 地板價

Yii Chen
May 29, 2022

--

讓你的NFT社群與眾不同吧!

Photo by Alexander Shatov on Unsplash

實作Discord的NFT地板價機器人,持續將最新價格呈現給DC成員看,也可以透過指令查詢地板價,根據需求去使用,簡單幫NFT社群開發自己的功能機器人,提升社群價值

功能

  • 定期更新NFT地板價
  • 指令查詢NFT地板價

套件

  • eris → 第三方Discord工具
  • opensea-scraper → 存取Opensea上的NFT相關資訊
  • eth-price → 以太幣資訊
  • typescript

實作

config.ts,準備好專案會使用到的重要資訊

  1. 包含機器人金鑰
  2. NFT project name
  3. 定期更新的時間長度(ms)

bot.ts 為主程式,首先定義抓取地板價資訊的指令 fp,接著定義NFT相關變數負責儲存資料,當然後最重要的是運行機器人,讓機器人保持上線的狀態

當機器人為 ready 狀態,代表已運行並連接上Discord,在開始需要做一些設定與操作,首先建立指令、設定機器人狀態與開始監看NFT地板價

createCommand() 建立自地義的斜線指令,指令名稱為 fp ,接著給予這個操作一些描述

setBotStatus() 設置機器人狀態

  1. 首先透過 OpenseaScraper 套件的 basicInfo(),取得NFT專案相關資訊,將名稱儲存起來,等待使用者執行指令查詢時可以在發送的訊息上設置名稱
  2. 接著編輯機器人的狀態,使用 editStatus(),更新機器人的名稱與狀態,WATCHING狀態會顯示在名稱下方的描述,顯示正在看

startWatchingFloorPrice() 啟動定期更新價格的服務

  1. 取得機器人加入的Discord社群,如果只是個人Discord要使用的話就只會有一個 guild 實體
  2. 外層包裹 while 迴圈而條件為 true,因為要重複一樣的操作,最後使用 sleep() 等待一段時間後再繼續
  3. 因為需要知道美金的價值,一開始先透過 ethPrice(‘usd’) 取得usd資訊,回傳的資料為 USD 29.30,需要將字串 split 後再擷取我們要的價格資料
  4. 跟獲取NFT資訊一樣,經由OpenseaScraper.floorPrice() 拿到專案的地板價資訊,並將以太幣換算成美金價格
  5. 最後使用 bot.editSelf(),更新機器人的名稱,名稱為最新的地板價資訊,這樣其他Discord用戶就能輕鬆了解目前的地板價

在機器人的 interactionCreate 事件裡包含了ComponentInteraction元件互動與CommandInteraction指令互動等多種Interactions,這邊檢查是否為 CommandInteraction ,並再檢查是否為原先定義的指令 fp

onReceiveFloorPriceCommand() 處理查詢地板價的指令操作,訊息的內容加入了NFT名稱、以太幣資訊與對應的美金價格,最後使用createMessage()發送訊息給互動的使用者

成品

到這邊就實現簡單的地板價機器人囉,如果Discord社群有這個服務,應該是不錯的對吧?!

範例

參考

其他文章

關於我

贊助

謝謝你!這是一個很長的文章而且你花費時間看完,真的非常感謝。

還有一件事, 如果覺得文章不錯可以贊助我,讓我有更多的動力和熱情分享 學習筆記和生活!請我喝一杯咖啡吧~

https://www.buymeacoffee.com/yiichenhi

最後

希望有幫助到你/妳,歡迎追蹤我,方便瀏覽最新的文章,也請別忘記給我拍手哦 (最多可以達到50次)!

--

--

Yii Chen

Flutter Lover || Organizer FlutterTaipei || Writer, Speaker || wanna make Flutter strong in Taiwan. https://linktr.ee/yiichenhi