Make your own Discord Bot — 1

許銘仁
8 min readSep 27, 2019

--

最近與朋友使用 Discord 在聊天,發現了這個軟體居然有 ChatBot 可以玩,也看到了許多人提供的寫好的 ChatBot 可以直接導入。

But

身為資工系,做一個屬於自己的機器人是正常的吧~

所以開始想我所要的功能(需求)囉!

首先我本身滿喜歡看 Twitch 的直播,但是想看直播時,不是等 Twitch 通知實況主開台了(有時候還會沒通知~ =口=),就是要自己去看看想看的實況主是否有開台。

所以當然是交給 ChatBot 囉~

還有我們本身會分享 Youtube 的音樂,但是在打遊戲又懶得跳窗點,所以這也加入到需求中囉~

更新紀錄

2020–10–31 - 已新增 OAuth 申請教學與 GitHub repo

需求

  1. 查看 Twitch 實況主 是否 Live
  2. 播放 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 的過程。

2020–10–31 — 更新日記

看了一下留言去測試 Twitch API,發現居然不 work 了,是因為 Twitch API 似乎新增了新的認證機制(OAuth),所以這邊就說明如何新增 OAuth Token 與附上 GitHub 供大家參考。

Twitch 提供三種 OAuth 方式,如下:

可以很明顯知道我是們屬於第三種,給應用程式使用的,所以只要使用以下的 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>。

GitHub

--

--