6 GP
【discord.js (v13) BOT 製作筆記一】官方範例程式碼
作者:游隼│2021-08-15 21:00:08│巴幣:12│人氣:4210
要做 DISCORD BOT 這兩個網站的文件詳細觀看理論上就可以完成
最近在折疼 JavaScript
印象中 Discord 的 BOT 可以用 JavaScript 寫 想說玩玩看當練習
不過剛好遇到 discord.js 大改版 (兩天前更新到 v13.1.0) 網路上的中文教學大部分都失效了
這裡只記錄採到的坑 其他舊版教學差不多的就不重複講了 (我就爛)
這裡建立 Discord 的 BOT APP,還有最重要的獲取 token (可以看做是登入 bot 帳密)![]()
下載 Node.js 的安裝包並安裝 要下載最新版本!
LTS 版 discord.js v13 不支援 我卡這裡卡好久... (不仔細看官方文件的下場)
如果有寫過程式,可以用習慣的 Code 編輯器,我用官方推薦的 Visual Studio Code。安裝 ESLint (針對 JavaScript 優化的擴充元件) 不是必須的,不過安裝會方便許多。總之,discord.js 文檔中的這篇文章,有詳細的說明及步驟。
範例所需依賴項
用 CMD 切到專案資料夾 執行下面指令安裝依賴項。
npm install discord.js @discordjs/rest discord-api-types |
完成後會多資料夾 "node_modules", 檔案 "package-lock.json"。
建立一個 註冊斜線指令.js 檔 (檔名可自訂) 下面程式碼是為了註冊斜線指令 /ping
const { REST } = require('@discordjs/rest'); const { Routes } = require('discord-api-types/v9');
const commands = [{ name: 'ping', description: 'Replies with Pong!' }];
const rest = new REST({ version: '9' }).setToken('BOT的TOKEN放這邊');
(async () => { try { console.log('Started refreshing application (/) commands.');
await rest.put( Routes.applicationGuildCommands('BOT的ID放這邊', '公會(伺服器)的ID放這邊'), { body: commands }, );
console.log('Successfully reloaded application (/) commands.'); } catch (error) { console.error(error); } })(); |
之後用 CMD 執行上面程式碼
完成後在 Discord 輸入 / 就可以看到 /ping (該 BOT 的斜線指令) 了,但此時該斜線指令沒有任何功能。
再建立一個 index.js 檔 這邊是 BOT 伺服器的主要程式 所有想實現功能都放這邊
const { Client, Intents } = require('discord.js'); const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
client.on('ready', () => { console.log(`Logged in as ${client.user.tag}!`); });
client.on('interactionCreate', async interaction => { if (!interaction.isCommand()) return;
if (interaction.commandName === 'ping') { await interaction.reply('Pong!'); } });
client.login('BOT的TOKEN放這邊'); |
之後用 CMD 執行上面程式碼
這時 BOT 伺服器已經開始運作了,再到 Discord 輸入 /ping 您建立的 BOT 就會回應 Pong!。
要關閉 BOT 伺服器可以按 Ctrl+C 關閉伺服器,之後 Discord 的 BOT 將會離線。
如果想要 BOT 持續運作就必須一直開著電腦,或是用 Azure, GCP, AWS, OC 這類雲端伺服器。
引用網址:http://www.jamesdambrosio.com/TrackBack.php?sn=5239074
All rights reserved. 版權所有,保留一切權利