{%hackmd BJrTq20hE %}
第 14 屆 iThome 鐵人賽 (2022)
『Why do it yourself,when robots do it better』 --Echo ,機器人做得更好,幹嘛自己做,是我喜歡的幹員所講的話,充分表現了我身為資工人的想法,懶惰為進步之母,勤奮為怠惰彌補,身為資工人就是沒事 > 有事 > Debug > 再一次。
首先,我們需要先設立一個Package,這樣才能在之後更好管理我們的套件和要安裝的依據性模組。
npm init -y
接下來,我們就能夠安裝Discord Bot的Package,這是為了使我們能夠跟DC伺服器溝通的套件,所以要確保Dependencies
裡面有設定到,我們安裝的套件。
npm install discord.js dotenv
檢查Dependencies
裡面有設定到
然後我們要建立一個.env的檔案,記得.env的檔案從不應該給其他人看到,也不應該被Push
到任何本地或遠端資料庫,因為我們在裡面設定的資料,將會賦予使用者管理員權限,意思就是之後您遇到任何檔案裡的.env資料都應該被妥善保存,我們在要.env裡面保存我們機器人的Token,回到Discord api 研發者介面,從BOT > RESET BOT'S TOKEN 生成屬於自己的Token,記得任何擁有Token資訊的人都能夠獲得這支機器人的全權控制,請妥善保管。
然後將其輸入到我們的.env檔案裡。
創造一個app.js開始寫DiscordBot的主程式,首先我們需要引入剛剛下載的Dependencies
。
import DiscordJS from 'discord.js'
import dotenv from 'dotenv'
也可以用
const discord.js = require('discord.js')
const dotenv = require('dotenv')
然後使用,JavaScript=const client = new DiscordJS.Client({})
創造client使用端的物件,在Discord API 14以上的版本,要使用intents:[]來宣告這個機器人有什麼功能,所以所有的功能都要先告訴GatewayIntentBits,使用client.on()來註冊事件,在使用Login來登入,關於物件及物件Emitter我會在下一篇進行更進一步的講解。
import DiscordJS,{ GatewayIntentBits, IntentsBitField } from 'discord.js'
import dotenv from 'dotenv'
dotenv.config()
const client = new DiscordJS.Client({
intents:[
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
]
})
client.on('messageCreate',(message) => {
if (message.content === 'test'){
message.reply({
content:'BOT已啟動 BOT準備完畢',
})
}
})
client.login(process.env.TOKEN)
來試試看可不可以用吧!
node app.js
诶! 0~,這是因為我們的程式在模組外面執行,所以不能和DC的伺服器建立溝通,所以我們要去package.json裡面設定Node="type": "module",
,在試用一次。
我們的機器人就上線拉!
然後在聊天頻道打上test
是一個健康的男孩子呢QQ(感動),下一篇我會用DC機器人來講解『事件與事件監聽器』,Discord機器人還有很多可能性,像是能夠自定義歡迎訊息,紀錄時間,甚至能夠做一個連接網站給妳勝率最高英雄的福文與天賦,形成自己的經濟系統,或單純的讓你的DC體驗變得更好,這些方法學以自用,成就感會是很充裕的。
今天的結構: