Ubuntu

기능: 최근 LCK 모스트픽, 승률 비교 OX퀴즈 생성

Showing 1 changed file with 61 additions and 4 deletions
...@@ -20,6 +20,7 @@ const version = '0.1'; ...@@ -20,6 +20,7 @@ const version = '0.1';
20 const dataFileName = 'data.json'; 20 const dataFileName = 'data.json';
21 21
22 var fakerData = {}; 22 var fakerData = {};
23 +var quizList = [];
23 24
24 async function checkData() { 25 async function checkData() {
25 try { 26 try {
...@@ -55,6 +56,8 @@ async function checkData() { ...@@ -55,6 +56,8 @@ async function checkData() {
55 } 56 }
56 } 57 }
57 58
59 + generateQuiz();
60 +
58 return new Promise(function (resolve, reject) { 61 return new Promise(function (resolve, reject) {
59 resolve(); 62 resolve();
60 }); 63 });
...@@ -213,8 +216,56 @@ async function getData() { ...@@ -213,8 +216,56 @@ async function getData() {
213 }); 216 });
214 } 217 }
215 218
219 +function generateQuiz() {
220 + quizList = [];
221 + //#region 최근 LCK 모스트픽 ox
222 + var mostList = [];
223 + mostList = fakerData.recentLCK.most;
224 + var quizO = `${fakerData.name}의 '${fakerData.recentLCK.name}' 모스트 픽은 '${mostList[0].champion}'이다.`;
225 + var quizX = `${fakerData.name}의 '${fakerData.recentLCK.name}' 모스트 픽은 '${mostList[2].champion}'이다.`;
226 + var info = `${fakerData.name}는 '${fakerData.recentLCK.name}'에서 '${mostList[0].champion}'을 가장 많이 플레이했습니다. (${mostList[0].played}게임)`;
227 + generateOX(quizO,quizX,info);
228 + //#endregion
229 +
230 + //#region 최근 LCK 승률 비교 ox
231 + var lckWinRate = fakerData.recentLCK.comparison_WinRate.split(' ')[0];
232 + var recentWinRate = fakerData.recentLCK.comparison_WinRate.split(' ')[1];
233 + if (lckWinRate < recentWinRate) {
234 + quizO = `${fakerData.name}의 '${fakerData.recentLCK.name}' 승률은 LCK 통산 승률보다 높다.`;
235 + quizX = `${fakerData.name}의 '${fakerData.recentLCK.name}' 승률은 LCK 통산 승률보다 낮다.`;
236 + } else {
237 + quizO = `${fakerData.name}의 '${fakerData.recentLCK.name}' 승률은 LCK 통산 승률보다 낮다.`;
238 + quizX = `${fakerData.name}의 '${fakerData.recentLCK.name}' 승률은 LCK 통산 승률보다 높다.`;
239 + }
240 + info = `${fakerData.recentLCK.name}' 승률 : ${recentWinRate}\nLCK 통산 승률 : ${lckWinRate}`;
241 + generateOX(quizO,quizX,info);
242 + //#endregion
243 +}
244 +
245 +function generateOX(quizO, quizX, moreInfo) {
246 + var quiz;
247 + var ans;
248 + var info;
249 + info = moreInfo;
250 + if (Math.random() > 0.5) {
251 + quiz = quizO;
252 + ans = 'o';
253 + } else {
254 + quiz = quizX;
255 + ans = 'x';
256 + }
257 + quiz = '[OX퀴즈] ' + quiz;
258 + quizList.push(
259 + {
260 + quiz: quiz,
261 + ans: ans,
262 + info: info
263 + }
264 + );
265 +}
266 +
216 app.use(bodyParser.json()); 267 app.use(bodyParser.json());
217 -app.post('/hook', function (req, res) { 268 +app.post('/hook', async function (req, res) {
218 var eventObj = req.body.events[0]; 269 var eventObj = req.body.events[0];
219 var source = eventObj.source; 270 var source = eventObj.source;
220 var message = eventObj.message; 271 var message = eventObj.message;
...@@ -225,12 +276,18 @@ app.post('/hook', function (req, res) { ...@@ -225,12 +276,18 @@ app.post('/hook', function (req, res) {
225 console.log('[request source] ', eventObj.source); 276 console.log('[request source] ', eventObj.source);
226 console.log('[request message]', eventObj.message); 277 console.log('[request message]', eventObj.message);
227 278
228 - sendMessage(eventObj.replyToken, eventObj.message.text); 279 + if (eventObj.message.text == '시작') {
280 + await checkData();
281 + sendQuiz(eventObj.replyToken);
282 + }
229 283
230 res.sendStatus(200); 284 res.sendStatus(200);
231 }); 285 });
232 286
233 -function sendMessage(replyToken, message) { 287 +function sendQuiz(replyToken, message) {
288 + var randomQuiz = quizList[Math.floor(Math.random()*quizList.length)];
289 + var quizText = randomQuiz.quiz;
290 +
234 request.post( 291 request.post(
235 { 292 {
236 url: TARGET_URL, 293 url: TARGET_URL,
...@@ -242,7 +299,7 @@ function sendMessage(replyToken, message) { ...@@ -242,7 +299,7 @@ function sendMessage(replyToken, message) {
242 "messages":[ 299 "messages":[
243 { 300 {
244 "type":"text", 301 "type":"text",
245 - "text":"test" 302 + "text":quizText
246 } 303 }
247 ] 304 ]
248 } 305 }
......