最近與朋友使用 Discord 在聊天,發現了這個軟體居然有 ChatBot 可以玩,也看到了許多人提供的寫好的 ChatBot 可以直接導入。
But
身為資工系,做一個屬於自己的機器人是正常的吧~
所以開始想我所要的功能(需求)囉!
首先我本身滿喜歡看 Twitch 的直播,但是想看直播時,不是等 Twitch 通知實況主開台了(有時候還會沒通知~ =口=),就是要自己去看看想看的實況主是否有開台。
所以當然是交給 ChatBot 囉~
還有我們本身會分享 Youtube 的音樂,但是在打遊戲又懶得跳窗點,所以這也加入到需求中囉~
更新紀錄
2020–10–31 - 已新增 OAuth 申請教學與 GitHub repo
需求
- 查看 Twitch 實況主 是否 Live
- 播放 Youtube 連結
現在知道需求了,就開始製作 ChatBot 啦~
這一篇先製作較為簡單的需求 1,音樂機器人細節較多,會在第 2 篇完整交代。
製作過程
我是使用 NodeJS 來撰寫 ChatBot,其中我會用到許多的 Library,這部分我會放在結尾。
首先是將機器人建立出來然後加入到 Discord 中,網路上有很多教學,這邊快速帶過。
First
先到這個網站進行申請 → https://discordapp.com/developers/applications/
點擊右上角的 New Application ( かまどねずこ是我寫好的機器人)
接著會跳出專案命名,取好後,會到以下畫面。
先到 Bot 創建一個新機器人
其中 Bot 這邊有 ChatBot 的密鑰,先記起來備用
接著點擊 OAuth2 ,這邊是要選擇機器人在頻道的相關權限以及將機器人加入到頻道中。
接著在 SCOPES 選擇 Bot,然後在 BOT PERMISSIONS 選擇 Send Messages、Manage Messages、Connect 與 Speak,如下圖。
BOT PERMISSIONS 的選項都是為了音樂機器人的部分,這邊如果你不想做音樂機器人的話,可以都不勾
接著畫面中會產生相對應的 URL,像是上面的紅框內容。
將前往其 URL 的頁面,會看到以下畫面。
就可以選擇你想要讓機器人加入的頻道囉~~~~~~
Second
先到 Twitch Developer 申請使用 API → https://dev.twitch.tv/
登入你的帳號後,註冊您的應用程式
之後會出現相關資訊,OAuth 重新導向位置 → 填寫 http://localhost
將其他相關資訊填寫完後,按建立後,下面會出現一組用戶端 ID,要保留起來備用唷!!!!
接下來附上程式碼部分,再一步步說明。
其中要將剛剛留起來備用的 Twitch Client ID 跟 ChatBot Token 換成你的。
auth.twitch_clientID = Your Twitch Client ID
auth.token = Your ChatBot Token
如何製造 Discord ChatBot,我是使用 Discord.js 這一個函式庫,藉此來與 Discord API 溝通。
只要訊息進來,就可以對其做很多事情,像是查看是誰發送的、訊息內容等等…
我會將 discord.js 的相關資訊,放在參考資料中,裡面內容十分豐富,且說明詳細,非常好使用。
這邊我是使用 Twitch API 中的 https://api.twitch.tv/helix/streams 來查看特定實況主是否在線上直播。
Twitch API 的相關資訊,我會放到參考資料中
成果
影片中,我將一個正在開台中的實況主加入到我的列表中,ChatBot 就可以根據列表一一查看每個實況主是否開台。
結論
萬事起頭難,一開始對於 ChatBot 沒有太多暸解,自己製作一遍後,大概會懂他的運作流程與原理,真的滿好玩的
下一篇會講解製作 Music ChatBot 的過程。
Library
參考資料
2020–10–31 — 更新日記
看了一下留言去測試 Twitch API,發現居然不 work 了,是因為 Twitch API 似乎新增了新的認證機制(OAuth),所以這邊就說明如何新增 OAuth Token 與附上 GitHub 供大家參考。
Twitch 提供三種 OAuth 方式,如下:
- The OAuth implicit code flow gets user access tokens.
- The OAuth authorization code flow gets user access tokens.
- The OAuth client credentials flow gets app access tokens.
可以很明顯知道我是們屬於第三種,給應用程式使用的,所以只要使用以下的 URL,就可以獲得 OAuth Token,其中 client_id 與 client_secret 都是在先前的應用程式中有提供,如下圖。
黑色部分是 client_id,紅色部分則是 client_secret。
POST https://id.twitch.tv/oauth2/token?client_id=<YOUR_client_id>&client_secret=<YOUR_client_secret>&grant_type=client_credentialsNote: 可以透過 PostMan 去拿取 token,request 完後就會拿到一組 Token 與 Token Type
之後只要再先前的程式碼中將 OAuth 加入 Header 中,就可以使用了~~~~
Token Type 應該會是 bearer,所以全部的 OAuth Token 會是 Bearer <Your Twitch Token>。