Showing
2 changed files
with
124 additions
and
14 deletions
1 | const express = require("express"); | 1 | const express = require("express"); |
2 | const line = require("@line/bot-sdk"); | 2 | const line = require("@line/bot-sdk"); |
3 | const setFlexMessage = require("./apis/setFlexMessage"); | 3 | const setFlexMessage = require("./apis/setFlexMessage"); |
4 | +const fs = require("fs"); | ||
5 | + | ||
4 | require("dotenv").config(); | 6 | require("dotenv").config(); |
5 | const config = { | 7 | const config = { |
6 | channelAccessToken: process.env.channelAccessToken, | 8 | channelAccessToken: process.env.channelAccessToken, |
... | @@ -15,17 +17,37 @@ app.post("/webhook", line.middleware(config), (req, res) => { | ... | @@ -15,17 +17,37 @@ app.post("/webhook", line.middleware(config), (req, res) => { |
15 | }); | 17 | }); |
16 | 18 | ||
17 | const client = new line.Client(config); | 19 | const client = new line.Client(config); |
20 | + | ||
21 | +let waitNewMamulList = []; // 매물 키워드 입력 기다리는 목록 | ||
22 | + | ||
18 | function handleEvent(event) { | 23 | function handleEvent(event) { |
19 | if (event.type !== "message" || event.message.type !== "text") { | 24 | if (event.type !== "message" || event.message.type !== "text") { |
20 | - return Promise.resolve(null); | ||
21 | - } | ||
22 | console.log(event); | 25 | console.log(event); |
23 | - | 26 | + if (event.type == "postback") { |
24 | - // push | 27 | + if (event.postback.data == "new") { |
25 | - // 매물 테스트 알림 | 28 | + var found = waitNewMamulList.indexOf(event.source.userId); |
26 | - return client.pushMessage(event.source.userId, { | 29 | + if (found == -1) { |
30 | + waitNewMamulList.push(event.source.userId); | ||
31 | + console.log(waitNewMamulList); | ||
32 | + return Promise.resolve( | ||
33 | + client.replyMessage(event.replyToken, { | ||
34 | + type: "text", | ||
35 | + text: "등록할 매물 키워드를 알려주세요!", | ||
36 | + }) | ||
37 | + ); | ||
38 | + } else { | ||
39 | + return Promise.resolve( | ||
40 | + client.replyMessage(event.replyToken, { | ||
41 | + type: "text", | ||
42 | + text: "등록할 매물 키워드를 알려주세요!", | ||
43 | + }) | ||
44 | + ); | ||
45 | + } | ||
46 | + } else if (event.postback.data == "check") { | ||
47 | + return Promise.resolve( | ||
48 | + client.replyMessage(event.replyToken, { | ||
27 | type: "flex", | 49 | type: "flex", |
28 | - altText: "새로운 매물이 왔어요!", | 50 | + altText: "등록된 매물", |
29 | contents: setFlexMessage( | 51 | contents: setFlexMessage( |
30 | "daangn", | 52 | "daangn", |
31 | "RTX 3080", | 53 | "RTX 3080", |
... | @@ -33,12 +55,100 @@ function handleEvent(event) { | ... | @@ -33,12 +55,100 @@ function handleEvent(event) { |
33 | "https://dnvefa72aowie.cloudfront.net/origin/article/202205/94cdd237258671d5806a70f64ab2b3c7dcd790da0384b394ef5809fe10c08ced.webp?q=95&s=1440x1440&t=inside", | 55 | "https://dnvefa72aowie.cloudfront.net/origin/article/202205/94cdd237258671d5806a70f64ab2b3c7dcd790da0384b394ef5809fe10c08ced.webp?q=95&s=1440x1440&t=inside", |
34 | "https://www.daangn.com/articles/403755360" | 56 | "https://www.daangn.com/articles/403755360" |
35 | ), | 57 | ), |
36 | - }); | 58 | + }) |
37 | - // return client.replyMessage(event.replyToken, { | 59 | + ); |
38 | - // type: "text", | 60 | + } |
39 | - // text: event.message.text, | 61 | + } |
40 | - // }); | 62 | + return Promise.resolve(null); |
63 | + } else { | ||
64 | + console.log(event); | ||
65 | + var found = waitNewMamulList.indexOf(event.source.userId); | ||
66 | + if (found == -1) { | ||
67 | + return Promise.resolve( | ||
68 | + client.replyMessage(event.replyToken, { | ||
69 | + type: "text", | ||
70 | + text: "왼쪽 하단 메뉴버튼(☰)을 클릭해 상호작용 해주세요!", | ||
71 | + }) | ||
72 | + ); | ||
73 | + } else { | ||
74 | + // TODO: 서버에 키워드 등록하는 api | ||
75 | + waitNewMamulList.splice(found, 1); | ||
76 | + console.log(waitNewMamulList[found]); | ||
77 | + return Promise.resolve( | ||
78 | + client.replyMessage(event.replyToken, { | ||
79 | + type: "text", | ||
80 | + text: "매물이 등록되었습니다!\n등록된 매물: " + event.message.text, | ||
81 | + }) | ||
82 | + ); | ||
83 | + } | ||
84 | + } | ||
41 | } | 85 | } |
42 | 86 | ||
43 | -app.listen(3000); | 87 | +const port = 1231; |
44 | -console.log("listening..."); | 88 | +app.listen(port); |
89 | +console.log(`listening...\nport : ${port}`); | ||
90 | + | ||
91 | +/*Push Message*/ | ||
92 | +// client.pushMessage(event.source.userId, { | ||
93 | +// type: "flex", | ||
94 | +// altText: "새로운 매물이 왔어요!", | ||
95 | +// contents: setFlexMessage( | ||
96 | +// "daangn", | ||
97 | +// "RTX 3080", | ||
98 | +// "1000000", | ||
99 | +// "https://dnvefa72aowie.cloudfront.net/origin/article/202205/94cdd237258671d5806a70f64ab2b3c7dcd790da0384b394ef5809fe10c08ced.webp?q=95&s=1440x1440&t=inside", | ||
100 | +// "https://www.daangn.com/articles/403755360" | ||
101 | +// ), | ||
102 | +// }) | ||
103 | + | ||
104 | +/*리치메뉴 설정*/ | ||
105 | +// let richMenu = { | ||
106 | +// size: { | ||
107 | +// width: 2500, | ||
108 | +// height: 843, | ||
109 | +// }, | ||
110 | +// selected: false, | ||
111 | +// name: "Nice richmenu", | ||
112 | +// chatBarText: "Tap to open", | ||
113 | +// areas: [ | ||
114 | +// { | ||
115 | +// bounds: { | ||
116 | +// x: 0, | ||
117 | +// y: 0, | ||
118 | +// width: 1250, | ||
119 | +// height: 843, | ||
120 | +// }, | ||
121 | +// action: { | ||
122 | +// type: "postback", | ||
123 | +// label: "new", | ||
124 | +// data: "new", | ||
125 | +// displayText: "키워드 등록", | ||
126 | +// inputOption: "openKeyboard", | ||
127 | +// fillInText: "", | ||
128 | +// }, | ||
129 | +// }, | ||
130 | +// { | ||
131 | +// bounds: { | ||
132 | +// x: 1250, | ||
133 | +// y: 0, | ||
134 | +// width: 1250, | ||
135 | +// height: 843, | ||
136 | +// }, | ||
137 | +// action: { | ||
138 | +// type: "postback", | ||
139 | +// label: "check", | ||
140 | +// data: "check", | ||
141 | +// displayText: "최신 매물 확인", | ||
142 | +// inputOption: "openKeyboard", | ||
143 | +// fillInText: "", | ||
144 | +// }, | ||
145 | +// }, | ||
146 | +// ], | ||
147 | +// }; | ||
148 | +//// 등록 | ||
149 | +// client.createRichMenu(richMenu).then((richMenuId) => console.log(richMenuId)); | ||
150 | +// client.setRichMenuImage( | ||
151 | +// "richmenu-183eff606f059b8244f0a625b54bddf1", | ||
152 | +// fs.createReadStream("./static/img/richMenu.jpg") | ||
153 | +// ); | ||
154 | +// client.setDefaultRichMenu("richmenu-183eff606f059b8244f0a625b54bddf1"); | ... | ... |
server/static/img/richMenu.jpg
0 → 100644
114 KB
-
Please register or login to post a comment