功能
- 定期更新NFT地板價
- 指令查詢NFT地板價
套件
- eris → 第三方Discord工具
- opensea-scraper → 存取Opensea上的NFT相關資訊
- eth-price → 以太幣資訊
- typescript
實作
config.ts
,準備好專案會使用到的重要資訊
- 包含機器人金鑰
- NFT project name
- 定期更新的時間長度(ms)
bot.ts
為主程式,首先定義抓取地板價資訊的指令 fp
,接著定義NFT相關變數負責儲存資料,當然後最重要的是運行機器人,讓機器人保持上線的狀態
當機器人為 ready
狀態,代表已運行並連接上Discord,在開始需要做一些設定與操作,首先建立指令、設定機器人狀態與開始監看NFT地板價
createCommand()
建立自地義的斜線指令,指令名稱為 fp
,接著給予這個操作一些描述
setBotStatus()
設置機器人狀態
- 首先透過
OpenseaScraper
套件的basicInfo()
,取得NFT專案相關資訊,將名稱儲存起來,等待使用者執行指令查詢時可以在發送的訊息上設置名稱 - 接著編輯機器人的狀態,使用
editStatus()
,更新機器人的名稱與狀態,WATCHING
狀態會顯示在名稱下方的描述,顯示正在看
startWatchingFloorPrice()
啟動定期更新價格的服務
- 取得機器人加入的Discord社群,如果只是個人Discord要使用的話就只會有一個 guild 實體
- 外層包裹
while
迴圈而條件為 true,因為要重複一樣的操作,最後使用sleep()
等待一段時間後再繼續 - 因為需要知道美金的價值,一開始先透過
ethPrice(‘usd’)
取得usd資訊,回傳的資料為USD 29.30
,需要將字串 split 後再擷取我們要的價格資料 - 跟獲取NFT資訊一樣,經由
OpenseaScraper.floorPrice()
拿到專案的地板價資訊,並將以太幣換算成美金價格 - 最後使用
bot.editSelf()
,更新機器人的名稱,名稱為最新的地板價資訊,這樣其他Discord用戶就能輕鬆了解目前的地板價
在機器人的 interactionCreate
事件裡包含了ComponentInteraction
元件互動與CommandInteraction
指令互動等多種Interactions,這邊檢查是否為 CommandInteraction
,並再檢查是否為原先定義的指令 fp
onReceiveFloorPriceCommand()
處理查詢地板價的指令操作,訊息的內容加入了NFT名稱、以太幣資訊與對應的美金價格,最後使用createMessage()
發送訊息給互動的使用者
成品
到這邊就實現簡單的地板價機器人囉,如果Discord社群有這個服務,應該是不錯的對吧?!
範例
參考
- https://github.com/rssnyder/discord-nft-floor-price/blob/master/src/solanart.ts
- https://github.com/rssnyder/discord-stock-ticker#openseasolanart-nft-collection-floor-price
其他文章
- What are Async and Isolates in Flutter?
- Flutter 3 有什麼新東西?
- Riverpod 輕鬆學,原來這麼好用!
- Discord使用Collab.land驗證NFT持有者
關於我
- Github:https://github.com/chyiiiiiiiiiiii
- Linkedin:https://www.linkedin.com/in/yiichenhi/
- Youtube:Yii
- Youtube:一起饅頭(美食頻道)
- Instagram:yiichenhi
- Email:ab20803@gmail.com
贊助
謝謝你!這是一個很長的文章而且你花費時間看完,真的非常感謝。
還有一件事, 如果覺得文章不錯可以贊助我,讓我有更多的動力和熱情分享 學習筆記和生活!請我喝一杯咖啡吧~
最後
希望有幫助到你/妳,歡迎追蹤我,方便瀏覽最新的文章,也請別忘記給我拍手哦 (最多可以達到50次)!