以下文章已於 2021/09/16 轉移至 微笑之家
對於discord.js更新,或是有其他問題,都歡迎到以下網址查看喔
本站
本主題
本文章
昨天我們成功創建了自己的機器人並且加入群組
可是機器人加入後怎麼都在睡覺,我怎麼找不到地方操作呢?
那是因為我們昨天做的事情是在Discord申請一個機器人帳戶而已~
就像我們的Discord帳戶需要透過Discord登入,Bot其實也需要登入喔
不過Bot的登入路口是要”自己寫”的,今天我們就來叫機器人起床吧!
首先請確保你已經安裝
Node.js
安裝教學
Node.js是我們機器人會使用到的後端語言
Node.js屬於弱型別語言,相較於其他語言,Node.js編譯前的限制較少,寫起來通常會感到較為自由
不過如果對於自己寫的東西不夠了解,弱型別語言並不一定能幫你抓出問題,導致你的問題直到實際運行時才會發生;
所以使用Node.js時、知道自己寫的東西具備甚麼效果是重要的
VSCode是筆者愛用的編輯器
VSCode本身體積很小,同時又支援許多的擴充套件,上面的中文化教學正是其中之一
因此VSCode可以輕鬆的做到客製化,且不改變他的體積簡約。
如果同學們原本就有在使用的編輯器,VSCode可以跳過不安裝
首先我們要先替機器人做一個”家”,我們先在自己喜歡的地方建一個資料夾,名字先取作DiscordBot就可以了
一個機器人的家裡面,我們基本需要…
機器人的工具箱(node_modules)
機器人與工具箱的說明書(package.json)
一隻機器人本體(bot.js)
門牌號碼(auth.json)
像這樣子
(看到package-lock.json是你業障重,別刪掉也別管他)
其中,node_modules跟package.json是透過node.js自動生成的,要生成這兩個東西,我們需要先在DiscordBot這個資料夾打開vscode
成功的話,左邊的路徑就會顯示資料夾名稱喔!
然後選擇上方的開啟終端機->新增終端
確認終端上面顯示的路徑是正確的後,在終端上面鍵入npm init
這是node的初始化行為
會要你輸入一些關於這個project的基本資料,之後輸出在package.json
就像這樣!
然後我們再手動創建bot.js檔與auth.json檔
如果說bot.js是機器人的本體,那auth.json就是機器人的內部授權碼
auth.json裡面的key代表的是機器人的啟動鑰匙,把鑰匙插進對應的地方才能啟動(有找到bot.js裡面有一行auth.key嗎?)
這邊我們把昨天在bot頁存下來的key放到your key value裡面,注意不要刪掉””
兩個檔案都創建好後記得存檔,我們回到終端機輸入
npm install discord.js
輸入 npm install discord.js後,node.js就會幫我們安裝discord.js這個工具
然後把檔案放在node_modules裡面,再到package.json底下紀錄我們使用了哪些工具
沒問題的話,最後我們在終端機輸入node bot
成功!明天我們會再針對今天的程式碼做講解
請問上面的門牌號碼要去哪裡弄?
昨天在Discord developers創建機器人時
Bot頁有一個Token,底下有個copy按鈕
點下去後就會把門牌號碼給你了喔,要記得存下來,放在這邊的auth.json裡面
第4天的做完顯示這樣,為什麼一關掉VSC機器人就自動離線了?
他說你的bot.js 第八行有問題
可以確定一下第八行的console.log(xxx);
1.最後面有沒有補上 ;
2.console.log()括弧中間確實有資料
3.附近的語法是否正確
4.重開機看看
因為console.log屬於js原生指令,語法正確的情況,重開機大概率可以解決此問題
建議路徑上不要有中文(你有一個資料夾叫做機器人)
因為當你執行bot.js時,bot.js就等同是在運作的機器人
關掉了程序、機器人自然也就不會有反應囉
要怎麼讓機器人一直在線上呢?
請問一下,這該怎麼解決?
你的常數宣告是configconst config = new Discord.Client();
所以client.login應該改成config.login
或是反過來,把config改回client,因為你下面都是用client做調用的
vsCode對已宣告但未使用的變數,顯示顏色會比較淡
之後有看到其他變數像現在的config一樣特別暗的話,有可能就是設置錯誤了喔
好的,把config改成client就可以了,感謝幫忙
加油喔
請問一下這該怎麼辦ouo
這是我第一次學DC機器人
"main": "bot.js"
後面要有一個 ,
啊啊啊我竟然沒看到XD
謝謝
可以再請教你一下為甚麼終端輸入node bot之後會出現這個該怎麼解決嗎?
喔耶可以了XD
請問一下 你是如何解決的? 我也卡在這個部分
請問一下,這個怎麼處理? QAQ
你沒遇到問題
你可以看最後三行,意思是他幫你裝了discord.js,花了多久
再問一下,我輸入node bot之後出現這個狀況,且機器人沒有被喚醒,這要怎麼處理?
我猜想原因是13版的discord.js,再度改寫了許多實例
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('token');
以上是截至官方文件的範例
可以看到宣告方法變了很多,如果要使用本教學的話建議以discord.js 12版為準
好的謝謝
微笑您好,我依照您的文章,在終端機輸入了 npm init的指令,但是當我將後來系統提供的程式碼貼上後,卻出現這個問題(如圖)!
系統偵測到一堆錯誤,請問該如何解決?另外,因為我使用的是較新版本的VSCode,因此終端機所要我輸入的資訊似乎不同於您的文章所寫的,請問我又該保留哪些系統跑出來的資訊呢?是全部複製貼上嗎?還是有其他作法?(圖片所示是我全部複製貼上之後)
搬運一下後來樓主得到的解答