Nodejs Line Bot 基本記錄
基本記錄及說明
可以先去 Github
取得 Line-Bot-SDK-nodejs,裡面有一個範本取回操作 範本
設定檔
架構說明:
indes.js -> 為主檔
package-lock.json -> 套件記錄
package.json -> 用 npm 安裝會從這個讀取需要的安裝的套件
src -> 放置設定檔或者其他功能分類用
- index.js 主檔
"use strict";
const line = require("@line/bot-sdk");
const express = require("express");
// 引用 line sdk 服務
const config = require("./const");
// 引用其他功能
const handle = require("./main");
// create LINE SDK client
const client = new line.Client(config);
// create Express app
// about Express itself: https://expressjs.com/
const app = express();
app.get("/src", (req, rep) => {
rep.end("Hello!!!");
});
// register a webhook handler with middleware
// about the middleware, please refer to doc
app.post("/callback", line.middleware(config), (req, res) => {
Promise.all(req.body.events.map(handleEvent))
.then((result) => res.json(result))
.catch((err) => {
console.error(err);
res.status(500).end();
});
});
// event handler
function handleEvent(event) {
if (event.type !== "message" || event.message.type !== "text") {
// ignore non-text-message event
return Promise.resolve(null);
}
// 設定功能取回來回應設定
let testMessage = handle(event.message.text);
// console.log(testMessage);
// create a echoing text message
// const echo = { type: "text", text: event.message.text };
const echo = { type: "text", text: testMessage };
// use reply API
return client.replyMessage(event.replyToken, echo);
}
// listen on port
// 指定 port 號
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`listening on ${port}`);
});
- const.js 連接的設定檔
// create LINE SDK config from env variables
// 設定與 line Developers 設定密鑰
const config = {
channelAccessToken: process.env.CHANNEL_ACCESS_TOKEN,
channelSecret: process.env.CHANNEL_SECRET
};
// 載入模組
module.exports = config;
- main.js 製做的功能
function handle(text) {
let d = new Date();
// 宣告時區,如不宣告會以該服務的時區時間為主
let s = d.toLocaleString(`zh-TW`, {
// 時區
timeZone: `Asia/Taipei`,
// 時間設定為 24 小時,預設為 12 小時
hour12: false
});
console.log(s);
// slice 取值
let t = s.slice(11, 13);
if (t > 5 && t < 11) {
return `早安!`;
} else if (t >= 11 && t <= 16) {
return `午安!`;
} else {
return `晚安!`;
}
}
module.exports = handle;