---
# 3.0-line robot
---
# 3.0-line robot
# 新機準備
## node.js
[下載(https://nodejs.org/zh-tw/download/)
[node.js 安裝不要勾這個](HINT a@0
[套件下載網](https://www.npmjs.com/)
讓json檔因為是npm而圖案變化

CTRL + SHIFT + P to open the Command Palette.
Search for “Terminal: Select Default Profile”
[Postman](https://www.postman.com/downloads/?utm_source=postman-home)
[Cchrome: JSON Viewer](https://chrome.google.com/webstore/detail/json-viewer/gbmdgpbipfallnflgajpaliibnhdgobh)
---
## 基本安裝(在工作資料夾)
新增 .env 打上 !
CHANNEL_ID=xxx
CHANNEL_SECRET=xxx
CHANNEL_ACCESS_TOKEN=xxx
(不空格!)
f1 json>喜好設定 新增:
"editor.codeActionsOnSave": { "source.fixAll.eslint": true
}
const $ = cheerio.load({data})
---
# 初學者執行
## line
註冊 https://developers.line.biz/console/channel/1657126199
進入下方

更新成下方

去line 綁定(1.機器人要開(index.js) 2.env設定好 3.開啟ngrok 貼上網址給Line )
---
# 有舊檔可免執行(npm i)
npm init --yes
package.json 最上方新增 “type”: “module”
npm i linebot axios dotenv cheerio(可用jQ更改網頁 )node-schedule(定時)
npm i -D eslint nodemon ngrok(插件引入比較快)
-g(全域安裝,任何資料夾都可,但不會顯示在package.json(久了學生容易忘記要裝))(上伺服器也要記得補裝)
裝eslint插件:
F1 eslint
>enforce>import>none>no>(勾)node>popular>standard>json>?npm >yes>設定完就有.eslintrc.json

"dev": "nodemon index.js",
"start": "node index.js",
"ngrok": "ngrok http 3000 --region jp",
(npm run start是預設通用指令,大家都會設)
npm run (+簡寫開頭)
"pre(開頭)": "tsc" (在(開頭)執行前多一個步驟)
如果事情多 可以 &&(老師記得是這個) 再加指令
---
# 開始操作:
---
ngrok:
1.npm run ngrok
2.複製顯示的forwarging 網址到
(記得https)
記得... import 'dotenv/config'

## 初始完成
---------------
LINE 回復格式打法:

heroku(註冊+綁信用卡可多450待機時間)
https://devcenter.heroku.com/articles/heroku-cli
# 部屬
------------
安裝heroko(win64)
cmd heroku 確認正常
cmd:heroku login
cmd: heroku git:clone -a linebot--rain


---
登陸後建新app

.env的內容於下面vars

## 調整時區 加變數
TZ:Asia/Taipei
cmd: heroku git:remote -a 名稱



---


---
**heroku logs -a 你的app名稱 --tail 持續看到server的資訊**

網址貼到line 驗證那


貼到LINE Webhook URL

----------
fs 除錯:
import fs from 'fs'
(放reply下面,會直接有async特性最後跑)
fs.writeFileSync('bubbles.json', JSON.stringify([
{
type: 'flex',
altText: '共通課程',
contents: {
type: 'carousel',
contents: bubbles.slice(0, 2)
}
}
], null, 2))
或是:
console.log(JSON.stringify(???), null, 2)
## 小坑:
