Merge branch 'feature/line-bot-refactor' into 'main'
Feature/line bot refactor minor 기능 구현 (UX) 및 코드 수정 See merge request !23
Showing
7 changed files
with
132 additions
and
116 deletions
| 1 | -const setKeywordsFlexMessage = require("../message/setKeywordsFlexMessage") | 1 | +const setKeywordsFlexMessage = require("../message/setKeywordsFlexMessage"); |
| 2 | 2 | ||
| 3 | const db = require("../../apis/database"); | 3 | const db = require("../../apis/database"); |
| 4 | 4 | ||
| 5 | const checkKeywords = (client, event) => { | 5 | const checkKeywords = (client, event) => { |
| 6 | db.getKeywordsByUserId(event.source.userId).then((keywords) => { | 6 | db.getKeywordsByUserId(event.source.userId).then((keywords) => { |
| 7 | flexMessage = setKeywordsFlexMessage(keywords); | 7 | flexMessage = setKeywordsFlexMessage(keywords); |
| 8 | - client.replyMessage(event.replyToken, flexMessage) | 8 | + client.pushMessage(event.source.userId, flexMessage); |
| 9 | - }) | 9 | + }); |
| 10 | }; | 10 | }; |
| 11 | 11 | ||
| 12 | module.exports = { checkKeywords }; | 12 | module.exports = { checkKeywords }; | ... | ... |
| 1 | const { marketMultiSearch } = require("../search/marketSearch"); | 1 | const { marketMultiSearch } = require("../search/marketSearch"); |
| 2 | const setCarouselMessage = require("../message/setCarouselMessage"); | 2 | const setCarouselMessage = require("../message/setCarouselMessage"); |
| 3 | + | ||
| 3 | // Database APIs | 4 | // Database APIs |
| 4 | const db = require("../../apis/database"); | 5 | const db = require("../../apis/database"); |
| 5 | -// API List | ||
| 6 | -// database.addKeyword = async function(keyword, userId) | ||
| 7 | -// database.deleteKeyword = async function(userId, keyword) | ||
| 8 | -// database.getKeywordsByUserId = async function(userId) | ||
| 9 | -// database.getUsersByKeyword = async function(keyword) | ||
| 10 | -// database.getAllUsers = async function() | ||
| 11 | -// database.getAllKeywords = async function() | ||
| 12 | 6 | ||
| 13 | const multiCheckMamul = (client) => { | 7 | const multiCheckMamul = (client) => { |
| 14 | db.getAllKeywords().then((keywords) => { | 8 | db.getAllKeywords().then((keywords) => { |
| 15 | for (let i = 0, pending = Promise.resolve(); i < keywords.length; i++) { | 9 | for (let i = 0, pending = Promise.resolve(); i < keywords.length; i++) { |
| 16 | pending = db.getUsersByKeyword(keywords[i]).then((userIds) => { | 10 | pending = db.getUsersByKeyword(keywords[i]).then((userIds) => { |
| 17 | marketMultiSearch(keywords[i]).then((res) => { | 11 | marketMultiSearch(keywords[i]).then((res) => { |
| 18 | - client.multicast(userIds, [setCarouselMessage(res)]); | 12 | + client.multicast(userIds, [setCarouselMessage(res, keywords[i])]); |
| 19 | }); | 13 | }); |
| 20 | }); | 14 | }); |
| 21 | } | 15 | } |
| ... | @@ -24,11 +18,11 @@ const multiCheckMamul = (client) => { | ... | @@ -24,11 +18,11 @@ const multiCheckMamul = (client) => { |
| 24 | 18 | ||
| 25 | const checkMamul = (client, userId) => { | 19 | const checkMamul = (client, userId) => { |
| 26 | db.getKeywordsByUserId(userId).then((keywords) => { | 20 | db.getKeywordsByUserId(userId).then((keywords) => { |
| 27 | - for (let i = 0, pending = Promise.resolve(); i< keywords.length; i++) { | 21 | + for (let i = 0, pending = Promise.resolve(); i < keywords.length; i++) { |
| 28 | pending = marketMultiSearch(keywords[i]).then((res) => { | 22 | pending = marketMultiSearch(keywords[i]).then((res) => { |
| 29 | - client.pushMessage(userId, setCarouselMessage(res)); | 23 | + client.pushMessage(userId, setCarouselMessage(res, keywords[i])); |
| 30 | }); | 24 | }); |
| 31 | - }; | 25 | + } |
| 32 | }); | 26 | }); |
| 33 | }; | 27 | }; |
| 34 | 28 | ... | ... |
| 1 | // Line chatbot + Message generate functions | 1 | // Line chatbot + Message generate functions |
| 2 | const line = require("@line/bot-sdk"); | 2 | const line = require("@line/bot-sdk"); |
| 3 | -const setFlexMessage = require("./message/setFlexMessage"); | ||
| 4 | const setCarouselMessage = require("./message/setCarouselMessage"); | 3 | const setCarouselMessage = require("./message/setCarouselMessage"); |
| 5 | -const setKeywordsFlexMessage = require("./message/setKeywordsFlexMessage") | ||
| 6 | 4 | ||
| 7 | // Market Search | 5 | // Market Search |
| 8 | -const { daangnSingleSearch } = require("./search/daangnSearch"); | ||
| 9 | -const { daangnMultiSearch } = require("./search/daangnSearch"); | ||
| 10 | -const { joongnaSingleSearch } = require("./search/joongnaSearch"); | ||
| 11 | -const { joongnaMultiSearch } = require("./search/joongnaSearch"); | ||
| 12 | -const { bunjangSingleSearch } = require("./search/bunjangSearch"); | ||
| 13 | -const { bunjangMultiSearch } = require("./search/bunjangSearch"); | ||
| 14 | const { marketMultiSearch } = require("./search/marketSearch"); | 6 | const { marketMultiSearch } = require("./search/marketSearch"); |
| 15 | 7 | ||
| 16 | -// File search - Will be deleted (Unused) | 8 | +// File search |
| 17 | const fs = require("fs"); | 9 | const fs = require("fs"); |
| 18 | 10 | ||
| 19 | // Cron for Mamul Notification | 11 | // Cron for Mamul Notification |
| ... | @@ -24,13 +16,6 @@ const job = schedule.scheduleJob("0 */1 * * *", () => { | ... | @@ -24,13 +16,6 @@ const job = schedule.scheduleJob("0 */1 * * *", () => { |
| 24 | 16 | ||
| 25 | // Database APIs | 17 | // Database APIs |
| 26 | const db = require("../apis/database"); | 18 | const db = require("../apis/database"); |
| 27 | -// API List | ||
| 28 | -// database.addKeyword = async function(keyword, userId) | ||
| 29 | -// database.deleteKeyword = async function(userId, keyword) | ||
| 30 | -// database.getKeywordsByUserId = async function(userId) | ||
| 31 | -// database.getUsersByKeyword = async function(keyword) | ||
| 32 | -// database.getAllUsers = async function() | ||
| 33 | -// database.getAllKeywords = async function() | ||
| 34 | 19 | ||
| 35 | // Import credentials for Line chatbot | 20 | // Import credentials for Line chatbot |
| 36 | require("dotenv").config({ path: __dirname + "/../config/.env" }); | 21 | require("dotenv").config({ path: __dirname + "/../config/.env" }); |
| ... | @@ -41,8 +26,7 @@ const config = { | ... | @@ -41,8 +26,7 @@ const config = { |
| 41 | 26 | ||
| 42 | // Cron for Mamul Notification | 27 | // Cron for Mamul Notification |
| 43 | const { multiCheckMamul, checkMamul } = require("./check/checkMamul"); | 28 | const { multiCheckMamul, checkMamul } = require("./check/checkMamul"); |
| 44 | -const { checkKeywords } = require("./check/checkKeywords") | 29 | +const { checkKeywords } = require("./check/checkKeywords"); |
| 45 | - | ||
| 46 | 30 | ||
| 47 | // Line chat bot client & event | 31 | // Line chat bot client & event |
| 48 | const client = new line.Client(config); | 32 | const client = new line.Client(config); |
| ... | @@ -74,9 +58,7 @@ function handleEvent(event) { | ... | @@ -74,9 +58,7 @@ function handleEvent(event) { |
| 74 | ); | 58 | ); |
| 75 | } | 59 | } |
| 76 | } else if (event.postback.data == "checkItems") { | 60 | } else if (event.postback.data == "checkItems") { |
| 77 | - return Promise.resolve( | 61 | + return Promise.resolve(checkMamul(client, event.source.userId)); |
| 78 | - checkMamul(client, event.source.userId), | ||
| 79 | - ); | ||
| 80 | } else if (event.postback.data == "deleteKeyword") { | 62 | } else if (event.postback.data == "deleteKeyword") { |
| 81 | var foundDelete = waitDeleteMamulList.indexOf(event.source.userId); | 63 | var foundDelete = waitDeleteMamulList.indexOf(event.source.userId); |
| 82 | if (foundDelete == -1) { | 64 | if (foundDelete == -1) { |
| ... | @@ -90,9 +72,7 @@ function handleEvent(event) { | ... | @@ -90,9 +72,7 @@ function handleEvent(event) { |
| 90 | ); | 72 | ); |
| 91 | } | 73 | } |
| 92 | } else if (event.postback.data == "checkKeywords") { | 74 | } else if (event.postback.data == "checkKeywords") { |
| 93 | - return Promise.resolve( | 75 | + return Promise.resolve(checkKeywords(client, event)); |
| 94 | - checkKeywords(client, event) | ||
| 95 | - ) | ||
| 96 | } | 76 | } |
| 97 | } | 77 | } |
| 98 | return Promise.resolve(null); | 78 | return Promise.resolve(null); |
| ... | @@ -110,7 +90,10 @@ function handleEvent(event) { | ... | @@ -110,7 +90,10 @@ function handleEvent(event) { |
| 110 | text: `매물이 등록되었습니다!\n등록된 매물: ${event.message.text}`, | 90 | text: `매물이 등록되었습니다!\n등록된 매물: ${event.message.text}`, |
| 111 | }), | 91 | }), |
| 112 | marketMultiSearch(event.message.text).then((res) => { | 92 | marketMultiSearch(event.message.text).then((res) => { |
| 113 | - client.pushMessage(event.source.userId, setCarouselMessage(res)); | 93 | + client.pushMessage( |
| 94 | + event.source.userId, | ||
| 95 | + setCarouselMessage(res, event.message.text) | ||
| 96 | + ); | ||
| 114 | }) | 97 | }) |
| 115 | ); | 98 | ); |
| 116 | } | 99 | } |
| ... | @@ -121,11 +104,15 @@ function handleEvent(event) { | ... | @@ -121,11 +104,15 @@ function handleEvent(event) { |
| 121 | console.log(waitDeleteMamulList[foundDelete]); | 104 | console.log(waitDeleteMamulList[foundDelete]); |
| 122 | return Promise.resolve( | 105 | return Promise.resolve( |
| 123 | db.deleteKeyword(event.source.userId, event.message.text), | 106 | db.deleteKeyword(event.source.userId, event.message.text), |
| 124 | - client.replyMessage(event.replyToken, { | 107 | + client |
| 108 | + .replyMessage(event.replyToken, { | ||
| 125 | type: "text", | 109 | type: "text", |
| 126 | text: `매물이 삭제되었습니다!\n삭제된 매물: ${event.message.text}`, | 110 | text: `매물이 삭제되었습니다!\n삭제된 매물: ${event.message.text}`, |
| 127 | }) | 111 | }) |
| 128 | - ) | 112 | + .then(() => { |
| 113 | + checkKeywords(client, event); | ||
| 114 | + }) | ||
| 115 | + ); | ||
| 129 | } | 116 | } |
| 130 | } | 117 | } |
| 131 | } | 118 | } |
| ... | @@ -253,11 +240,10 @@ module.exports = { handleEvent, config }; | ... | @@ -253,11 +240,10 @@ module.exports = { handleEvent, config }; |
| 253 | // }; | 240 | // }; |
| 254 | // 등록 | 241 | // 등록 |
| 255 | // client.createRichMenu(richMenu).then((richMenuId) => { | 242 | // client.createRichMenu(richMenu).then((richMenuId) => { |
| 256 | -// console.log(richMenuId) | 243 | +// console.log(richMenuId); |
| 257 | // }); | 244 | // }); |
| 258 | // client.setRichMenuImage( | 245 | // client.setRichMenuImage( |
| 259 | -// "richmenu-ab4bba1c3c9235be50e3e8924fabd940", | 246 | +// "richmenu-de8d05638cd98d81e765576986376314", |
| 260 | // fs.createReadStream("./static/image/richMenu.png") | 247 | // fs.createReadStream("./static/image/richMenu.png") |
| 261 | // ); | 248 | // ); |
| 262 | -// client.setDefaultRichMenu("richmenu-ab4bba1c3c9235be50e3e8924fabd940"); | 249 | +// client.setDefaultRichMenu("richmenu-de8d05638cd98d81e765576986376314"); |
| 263 | -// | ... | ... |
| 1 | const setFlexMessage = require("./setFlexMessage"); | 1 | const setFlexMessage = require("./setFlexMessage"); |
| 2 | 2 | ||
| 3 | -function setCarouselMessage(mamuls) { | 3 | +function setCarouselMessage(mamuls, keyword) { |
| 4 | let flexMessages = []; | 4 | let flexMessages = []; |
| 5 | let flexMessage = {}; | 5 | let flexMessage = {}; |
| 6 | - if ( | 6 | + if (mamuls[0] == undefined) { |
| 7 | - mamuls[0] == undefined && | ||
| 8 | - mamuls[1] == undefined && | ||
| 9 | - mamuls[2] == undefined | ||
| 10 | - ) { | ||
| 11 | let nonMamulMessage = { | 7 | let nonMamulMessage = { |
| 12 | type: "flex", | 8 | type: "flex", |
| 13 | - altText: "매물 검색 에러", | 9 | + altText: `${keyword} 매물은 아직 없어요!`, |
| 14 | contents: setFlexMessage( | 10 | contents: setFlexMessage( |
| 15 | "-", | 11 | "-", |
| 16 | "매물이 없습니다!", | 12 | "매물이 없습니다!", |
| ... | @@ -20,6 +16,20 @@ function setCarouselMessage(mamuls) { | ... | @@ -20,6 +16,20 @@ function setCarouselMessage(mamuls) { |
| 20 | "-" | 16 | "-" |
| 21 | ), | 17 | ), |
| 22 | }; | 18 | }; |
| 19 | + nonMamulMessage["contents"]["header"] = { | ||
| 20 | + type: "box", | ||
| 21 | + layout: "horizontal", | ||
| 22 | + contents: [ | ||
| 23 | + { type: "text", text: "매무리 봇", size: "sm", color: "#1DB446" }, | ||
| 24 | + { | ||
| 25 | + type: "text", | ||
| 26 | + text: `키워드: ${keyword}`, | ||
| 27 | + align: "end", | ||
| 28 | + color: "#1DB446", | ||
| 29 | + weight: "bold", | ||
| 30 | + }, | ||
| 31 | + ], | ||
| 32 | + }; | ||
| 23 | return nonMamulMessage; | 33 | return nonMamulMessage; |
| 24 | } | 34 | } |
| 25 | for (i = 0; i < mamuls.length; i++) { | 35 | for (i = 0; i < mamuls.length; i++) { |
| ... | @@ -51,9 +61,48 @@ function setCarouselMessage(mamuls) { | ... | @@ -51,9 +61,48 @@ function setCarouselMessage(mamuls) { |
| 51 | 61 | ||
| 52 | if (mamuls[i]["extraInfo"] == undefined || mamuls[i]["extraInfo"] == "") { | 62 | if (mamuls[i]["extraInfo"] == undefined || mamuls[i]["extraInfo"] == "") { |
| 53 | mamuls[i]["extraInfo"] = "없음"; | 63 | mamuls[i]["extraInfo"] = "없음"; |
| 54 | - } else if (mamuls[i]["extraInfo"].length > 150) { | 64 | + } else { |
| 55 | - mamuls[i]["extraInfo"] = mamuls[i]["extraInfo"].slice(0, 150) + "\n..."; | 65 | + if ( |
| 66 | + mamuls[i]["platform"] === "joongna" || | ||
| 67 | + mamuls[i]["platform"] === "중고나라" | ||
| 68 | + ) { | ||
| 69 | + let searchDot = mamuls[i]["extraInfo"].indexOf("..."); | ||
| 70 | + if (searchDot !== -1) { | ||
| 71 | + mamuls[i]["extraInfo"] = mamuls[i]["extraInfo"].slice(0, searchDot); | ||
| 72 | + } | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + console.log(`unparsed extraInfo : \n${mamuls[i]["extraInfo"]}`); | ||
| 76 | + let searchValue = "\n"; | ||
| 77 | + let pos = 0; | ||
| 78 | + let foundPos = 0; | ||
| 79 | + for (let j = 0; j < 4 && foundPos !== -1; j++) { | ||
| 80 | + foundPos = mamuls[i]["extraInfo"].indexOf(searchValue, pos); | ||
| 81 | + pos = foundPos + 1; | ||
| 82 | + } | ||
| 83 | + console.log(`pos: ${pos}`); | ||
| 84 | + if (foundPos !== -1) { | ||
| 85 | + mamuls[i]["extraInfo"] = | ||
| 86 | + mamuls[i]["extraInfo"].slice(0, foundPos) + "\n..."; | ||
| 87 | + console.log(`parsed extraInfo : \n${mamuls[i]["extraInfo"]}`); | ||
| 88 | + } | ||
| 89 | + if (mamuls[i]["extraInfo"].length > 40) { | ||
| 90 | + mamuls[i]["extraInfo"] = | ||
| 91 | + mamuls[i]["extraInfo"].slice(0, 40) + "\n..."; | ||
| 92 | + console.log(`parsed extraInfo : \n${mamuls[i]["extraInfo"]}`); | ||
| 93 | + } | ||
| 56 | } | 94 | } |
| 95 | + // } else if (mamuls[i]["extraInfo"].length > 70) { | ||
| 96 | + // mamuls[i]["extraInfo"] = mamuls[i]["extraInfo"].slice(0, 70) + "\n..."; | ||
| 97 | + // } else { | ||
| 98 | + | ||
| 99 | + // } | ||
| 100 | + // else if (mamuls[i]["extraInfo"].indexOf("\n") !== -1) { | ||
| 101 | + // console.log(mamuls[i]["extraInfo"].indexOf("\n", 4)); | ||
| 102 | + // let slicePoint = mamuls[i]["extraInfo"].indexOf("\n", 4); | ||
| 103 | + // mamuls[i]["extraInfo"] = | ||
| 104 | + // mamuls[i]["extraInfo"].slice(0, slicePoint) + "\n..."; | ||
| 105 | + // } | ||
| 57 | 106 | ||
| 58 | flexMessage = setFlexMessage( | 107 | flexMessage = setFlexMessage( |
| 59 | mamuls[i]["platform"], | 108 | mamuls[i]["platform"], |
| ... | @@ -69,10 +118,23 @@ function setCarouselMessage(mamuls) { | ... | @@ -69,10 +118,23 @@ function setCarouselMessage(mamuls) { |
| 69 | continue; | 118 | continue; |
| 70 | } | 119 | } |
| 71 | } | 120 | } |
| 72 | - | 121 | + flexMessages[0]["header"] = { |
| 122 | + type: "box", | ||
| 123 | + layout: "horizontal", | ||
| 124 | + contents: [ | ||
| 125 | + { type: "text", text: "매무리 봇", size: "sm", color: "#1DB446" }, | ||
| 126 | + { | ||
| 127 | + type: "text", | ||
| 128 | + text: `키워드: ${keyword}`, | ||
| 129 | + align: "end", | ||
| 130 | + color: "#1DB446", | ||
| 131 | + weight: "bold", | ||
| 132 | + }, | ||
| 133 | + ], | ||
| 134 | + }; | ||
| 73 | let carouselMessage = { | 135 | let carouselMessage = { |
| 74 | type: "flex", | 136 | type: "flex", |
| 75 | - altText: "Carousel mamul message", | 137 | + altText: `${keyword} 매무리가 도착했어요!`, |
| 76 | contents: { | 138 | contents: { |
| 77 | type: "carousel", | 139 | type: "carousel", |
| 78 | contents: flexMessages, | 140 | contents: flexMessages, | ... | ... |
| ... | @@ -44,46 +44,6 @@ function setFlexMessage( | ... | @@ -44,46 +44,6 @@ function setFlexMessage( |
| 44 | weight: "bold", | 44 | weight: "bold", |
| 45 | size: "xl", | 45 | size: "xl", |
| 46 | }, | 46 | }, |
| 47 | - // { | ||
| 48 | - // type: "box", | ||
| 49 | - // layout: "baseline", | ||
| 50 | - // margin: "md", | ||
| 51 | - // contents: [ | ||
| 52 | - // { | ||
| 53 | - // type: "icon", | ||
| 54 | - // size: "sm", | ||
| 55 | - // url: "https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png", | ||
| 56 | - // }, | ||
| 57 | - // { | ||
| 58 | - // type: "icon", | ||
| 59 | - // size: "sm", | ||
| 60 | - // url: "https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png", | ||
| 61 | - // }, | ||
| 62 | - // { | ||
| 63 | - // type: "icon", | ||
| 64 | - // size: "sm", | ||
| 65 | - // url: "https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png", | ||
| 66 | - // }, | ||
| 67 | - // { | ||
| 68 | - // type: "icon", | ||
| 69 | - // size: "sm", | ||
| 70 | - // url: "https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png", | ||
| 71 | - // }, | ||
| 72 | - // { | ||
| 73 | - // type: "icon", | ||
| 74 | - // size: "sm", | ||
| 75 | - // url: "https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gray_star_28.png", | ||
| 76 | - // }, | ||
| 77 | - // { | ||
| 78 | - // type: "text", | ||
| 79 | - // text: "4.0", | ||
| 80 | - // size: "sm", | ||
| 81 | - // color: "#999999", | ||
| 82 | - // margin: "md", | ||
| 83 | - // flex: 0, | ||
| 84 | - // }, | ||
| 85 | - // ], | ||
| 86 | - // }, | ||
| 87 | { | 47 | { |
| 88 | type: "box", | 48 | type: "box", |
| 89 | layout: "vertical", | 49 | layout: "vertical", | ... | ... |
| ... | @@ -17,19 +17,19 @@ function setKeywordsFlexMessage(keywords) { | ... | @@ -17,19 +17,19 @@ function setKeywordsFlexMessage(keywords) { |
| 17 | text: "등록된 키워드", | 17 | text: "등록된 키워드", |
| 18 | weight: "bold", | 18 | weight: "bold", |
| 19 | size: "xxl", | 19 | size: "xxl", |
| 20 | - margin: "md" | 20 | + margin: "md", |
| 21 | }, | 21 | }, |
| 22 | { | 22 | { |
| 23 | type: "separator", | 23 | type: "separator", |
| 24 | - margin: "xxl" | 24 | + margin: "xxl", |
| 25 | }, | 25 | }, |
| 26 | { | 26 | { |
| 27 | type: "box", | 27 | type: "box", |
| 28 | layout: "vertical", | 28 | layout: "vertical", |
| 29 | contents: [], | 29 | contents: [], |
| 30 | - margin: "md" | 30 | + margin: "md", |
| 31 | - } | 31 | + }, |
| 32 | - ] | 32 | + ], |
| 33 | }, | 33 | }, |
| 34 | }; | 34 | }; |
| 35 | 35 | ||
| ... | @@ -40,9 +40,9 @@ function setKeywordsFlexMessage(keywords) { | ... | @@ -40,9 +40,9 @@ function setKeywordsFlexMessage(keywords) { |
| 40 | 40 | ||
| 41 | return { | 41 | return { |
| 42 | type: "flex", | 42 | type: "flex", |
| 43 | - altText: "키워드 조회 오류", | 43 | + altText: "매무리 키워드 확인", |
| 44 | - contents: flexMessage | 44 | + contents: flexMessage, |
| 45 | - } | 45 | + }; |
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | function createKeywordTextBox(keyword) { | 48 | function createKeywordTextBox(keyword) { |
| ... | @@ -51,8 +51,8 @@ function createKeywordTextBox(keyword) { | ... | @@ -51,8 +51,8 @@ function createKeywordTextBox(keyword) { |
| 51 | text: keyword, | 51 | text: keyword, |
| 52 | size: "lg", | 52 | size: "lg", |
| 53 | align: "center", | 53 | align: "center", |
| 54 | - margin: "md" | 54 | + margin: "md", |
| 55 | - } | 55 | + }; |
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | module.exports = setKeywordsFlexMessage; | 58 | module.exports = setKeywordsFlexMessage; | ... | ... |
| 1 | -const { daangnSingleSearch } = require("./daangnSearch"); | 1 | +const { daangnMultiSearch } = require("./daangnSearch"); |
| 2 | -const { bunjangSingleSearch } = require("./bunjangSearch"); | 2 | +const { bunjangMultiSearch } = require("./bunjangSearch"); |
| 3 | -const { joongnaSingleSearch } = require("./joongnaSearch"); | 3 | +const { joongnaMultiSearch } = require("./joongnaSearch"); |
| 4 | -const setCarouselMessage = require("../message/setCarouselMessage"); | ||
| 5 | 4 | ||
| 6 | const marketMultiSearch = (keyword) => { | 5 | const marketMultiSearch = (keyword) => { |
| 7 | const result = []; | 6 | const result = []; |
| 8 | return new Promise((resolve, reject) => { | 7 | return new Promise((resolve, reject) => { |
| 9 | - daangnSingleSearch(keyword).then((res) => { | 8 | + daangnMultiSearch(keyword).then((res) => { |
| 10 | - result.push(res); | 9 | + console.log(`daangn: ${res}`); |
| 11 | - bunjangSingleSearch(keyword).then((res) => { | 10 | + if (res !== undefined && res !== null) { |
| 12 | - result.push(res); | 11 | + for (let i = 0; i < res.length && i < 4; i++) { |
| 13 | - joongnaSingleSearch(keyword).then((res) => { | 12 | + result.push(res[i]); |
| 14 | - result.push(res); | 13 | + } |
| 14 | + } | ||
| 15 | + bunjangMultiSearch(keyword).then((res) => { | ||
| 16 | + console.log(`bunjang: ${res}`); | ||
| 17 | + if (res !== undefined && res !== null) { | ||
| 18 | + for (let i = 0; i < res.length && i < 4; i++) { | ||
| 19 | + result.push(res[i]); | ||
| 20 | + } | ||
| 21 | + } | ||
| 22 | + joongnaMultiSearch(keyword).then((res) => { | ||
| 23 | + console.log(`joongna: ${res}`); | ||
| 24 | + if (res !== undefined && res !== null) { | ||
| 25 | + for (let i = 0; i < res.length && i < 4; i++) { | ||
| 26 | + result.push(res[i]); | ||
| 27 | + } | ||
| 28 | + } | ||
| 15 | resolve(result); | 29 | resolve(result); |
| 16 | }); | 30 | }); |
| 17 | }); | 31 | }); | ... | ... |
-
Please register or login to post a comment