從零開始的Discord機器人(1) - 建立機器人本體

本篇會建置Discord機器人所需的環境、完成機器人基本的架構並使其能夠運行。

  最近剛好有建立Discord機器人的需求,由於Discord.js目前已經更新到了v14,並且Discord後續推出斜線指令(Slash Commands)來取代以前較常出現的Prefix指令,加上以前寫的Discord機器人不僅不好擴充,也沒有好的架構,因此決定從零開始學習Discord.js v14並建立一支機器人。

1. 環境建立

  首先我們需要下載Node.js並安裝到電腦上。新建一個資料夾作為Discord機器人程式碼存放的位置,開啟Terminal在此資料夾內使用指令npm init並按照提示完成操作。

💡
這裡推薦使用Visual Studio Code作為本次的IDE,你可以直接在VS Code內開啟Terminal,不用切換到Terminal安裝package與執行,能省下很多時間。

  完成後我們就可以來下載discord.js了,在Terminal內輸入npm install discord.js並等他跑完。完成之後資料夾內應該會出現三個新東西,分別是:

  • node_modules:所有下載的package存放的位置。
  • package.json:用來描述目前項目的基本資訊、所依賴的package。
  • package-lock.json:用來記錄所有package的具體來源與版本號。

  如果你覺得很複雜也沒關係,我們目前只要關注package.json就好了。當你打開package.json時,除了基本資訊之外,應該會看到這一項:

"main": "index.js"

  這是我們Discord機器人的進入點,所以我們要新建一個index.js。新建完成之後,目前你可以先輸入永遠的經典做為測試:

// ---------------START---------------
console.log("Hello World!");
// ----------------END----------------

  完成之後,你可以嘗試在Terminal執行node .node index.js,如果你能順利看到Hello World,代表我們的環境已經建立完成了。

2. 新增機器人帳號

  環境建立好了之後,最重要的當然是跟Discord新增一個機器人帳號。當然我們並不需要為了機器人額外辦一個帳號,只需要在Discord Developer Portal建立一個新的Application即可。

  在Application內點擊右上角的New Application,隨意輸入Application的名稱並按下確定。建立完成之後,進入左邊的Bot並點擊Add Bot,如此一來我們就建立好了機器人。

  你可以幫機器人取名、更換頭貼,更重要的是將Previleged Gateway Intents底下的三個選項都打開,這樣機器人的設定就告一段落了。# 3. 讓機器人可以登入接下來,我們需要把我們會用到的一些關於機器人的參數都存起來。在機器人的資料夾內新增一個config.json,並輸入以下內容:

{
    "token": "在上面Application的Bot內生成一個Token,並在這裡貼上機器人的Token",
}

  接下來我們就能替index.js寫一些東西了。輸入以下內容:

// ---------------START---------------
const { token } = require ('./config.json');
const { Client, Events, GatewayIntentBits } = require ('discord.js');

const client = new Client ({intents: [GatewayIntentBits.Guilds]});
client.once (Events.ClientReady, c => {
    console.log (`歡迎登入 ${c.user.username}`);
});
client.login (token);
// ----------------END----------------

  這邊做的事情很簡單,新增一個client,監聽ClientReady的事件(當我們的機器人成功登入之後,Discord會觸發ClientReady的事件給機器人,機器人接收到便可以做相應的行動。目前我們只讓他印一個log作為通知),然後登入client。

  最後將機器人邀請到伺服器內,並在Terminal執行node .,只要看到機器人上線並在Terminal中看到log,代表我們的機器人已經成功登入囉!

4. 接下來要做的事情

  到目前為止,我們已經成功建立一隻機器人,並且能夠讓它上線了。接下來我們要做的事情就是新增斜線指令,但由於這部分篇幅會比較長,因此留到之後再詳細說明。

  除了斜線指令之外,後續也會說明如何新增互動視窗(Modal)與按鈕(Button)以增加更多互動性,也會將機器人整理成可以方便擴充的狀態。感謝你看到這邊,我們下次見。