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;

語法使用方式


補充說明


備註





參考相關網頁