Showing
2 changed files
with
80 additions
and
36 deletions
| ... | @@ -2,7 +2,7 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); | ... | @@ -2,7 +2,7 @@ const { SlashCommandBuilder } = require('@discordjs/builders'); |
| 2 | const { MessageEmbed } = require('discord.js'); | 2 | const { MessageEmbed } = require('discord.js'); |
| 3 | const axios = require("axios"); | 3 | const axios = require("axios"); |
| 4 | const cheerio = require("cheerio"); | 4 | const cheerio = require("cheerio"); |
| 5 | - | 5 | +const request = require("request-promise"); |
| 6 | 6 | ||
| 7 | module.exports = { | 7 | module.exports = { |
| 8 | data: new SlashCommandBuilder() | 8 | data: new SlashCommandBuilder() |
| ... | @@ -24,15 +24,7 @@ module.exports = { | ... | @@ -24,15 +24,7 @@ module.exports = { |
| 24 | let info_island = []; | 24 | let info_island = []; |
| 25 | let info_contents = []; | 25 | let info_contents = []; |
| 26 | let All_contents = ["유령선", "카오스 게이트"]; | 26 | let All_contents = ["유령선", "카오스 게이트"]; |
| 27 | - const $IslandList = $("ul.today-quest-list").children("li.list"); | 27 | + const $ContentList = $("ul.item-list").children("li.list"); |
| 28 | - const $ContentList = $("ul.item-list").children("li.list"); | ||
| 29 | - | ||
| 30 | - $IslandList.each(function(i, elem){ | ||
| 31 | - info_island[i] = { | ||
| 32 | - name : $(this).find('h4.island-name span').text(), | ||
| 33 | - reword : $(this).find('h5.lang-text').text() | ||
| 34 | - } | ||
| 35 | - }) | ||
| 36 | 28 | ||
| 37 | $ContentList.each(function(i, elem){ | 29 | $ContentList.each(function(i, elem){ |
| 38 | for(var i = 0; i < All_contents.length; i++){ | 30 | for(var i = 0; i < All_contents.length; i++){ |
| ... | @@ -42,20 +34,12 @@ module.exports = { | ... | @@ -42,20 +34,12 @@ module.exports = { |
| 42 | } | 34 | } |
| 43 | }) | 35 | }) |
| 44 | 36 | ||
| 45 | - let island_print = ""; | 37 | + const $Bosscontent = $('div.main-inner-box ul.item-list').children('li'.list); |
| 46 | - for(var i = 0; i < info_island.length; i++){ | 38 | + $Bosscontent.each(function(i, elem){ |
| 47 | - let rewordImage = ""; | 39 | + if($(this).find("h4.item-title").text() == "모아케"){ |
| 48 | - if(info_island[i].reword === "카드"){ | 40 | + info_contents.push("필드 보스"); |
| 49 | - rewordImage = "<:cardpack:976389392702791710>" | 41 | + } |
| 50 | - } else if(info_island[i].reword === "골드"){ | 42 | + }) |
| 51 | - rewordImage = "<:golds:976389688132788245>" | ||
| 52 | - } else if(info_island[i].reword === "주화"){ | ||
| 53 | - rewordImage = "<:piratecoin:976389403662508092>" | ||
| 54 | - } else if(info_island[i].reword === "실링"){ | ||
| 55 | - rewordImage = "<:shillings:976389357558710292>" | ||
| 56 | - } | ||
| 57 | - island_print += `${info_island[i].name}: ${info_island[i].reword} ${rewordImage}\n`; | ||
| 58 | - } | ||
| 59 | 43 | ||
| 60 | let content_print = ""; | 44 | let content_print = ""; |
| 61 | 45 | ||
| ... | @@ -67,16 +51,48 @@ module.exports = { | ... | @@ -67,16 +51,48 @@ module.exports = { |
| 67 | content_print = "오늘은 이용가능한 컨텐츠가 없어요"; | 51 | content_print = "오늘은 이용가능한 컨텐츠가 없어요"; |
| 68 | } | 52 | } |
| 69 | 53 | ||
| 70 | - const termembed = new MessageEmbed() | 54 | + //api 출처: 로학원생 |
| 71 | - .setColor('#008B8B') | 55 | + url = "http://152.70.248.4:5000/adventureisland/"; |
| 72 | - .setTitle('프로키온의 나침반') | ||
| 73 | - .setDescription(`오늘 이용가능한 컨텐츠 정보`) | ||
| 74 | - .addFields( | ||
| 75 | - {name: "모험섬", value: island_print, inline: true}, | ||
| 76 | - {name: "오늘의 콘텐츠", value: content_print, inline: true} | ||
| 77 | - ) | ||
| 78 | 56 | ||
| 79 | - interaction.reply({ embeds: [termembed], allowedMentions: {repliedUser: false} }); | 57 | + request(url, function(err, res, body){ |
| 58 | + if(err){ | ||
| 59 | + throw err; | ||
| 60 | + } | ||
| 61 | + let island_data = JSON.parse(body); | ||
| 62 | + | ||
| 63 | + for(var i = 0; i < island_data.Island.length; i++){ | ||
| 64 | + info_island[i] = { | ||
| 65 | + name : island_data.Island[i].Name, | ||
| 66 | + reward : island_data.Island[i].Reward | ||
| 67 | + } | ||
| 68 | + } | ||
| 69 | + }).then(function(){ | ||
| 70 | + let island_print = ""; | ||
| 71 | + for(var i = 0; i < info_island.length; i++){ | ||
| 72 | + let rewardImage = ""; | ||
| 73 | + if(info_island[i].reward === "카드"){ | ||
| 74 | + rewardImage = "<:cardpack:976389392702791710>" | ||
| 75 | + } else if(info_island[i].reward === "골드"){ | ||
| 76 | + rewardImage = "<:golds:976389688132788245>" | ||
| 77 | + } else if(info_island[i].reward === "주화"){ | ||
| 78 | + rewardImage = "<:piratecoin:976389403662508092>" | ||
| 79 | + } else if(info_island[i].reward === "실링"){ | ||
| 80 | + rewardImage = "<:shillings:976389357558710292>" | ||
| 81 | + } | ||
| 82 | + island_print += `${info_island[i].name}: ${info_island[i].reward} ${rewardImage}\n`; | ||
| 83 | + } | ||
| 84 | + | ||
| 85 | + const compassembed = new MessageEmbed() | ||
| 86 | + .setColor('#008B8B') | ||
| 87 | + .setTitle('프로키온의 나침반') | ||
| 88 | + .setDescription(`오늘 이용가능한 컨텐츠 정보`) | ||
| 89 | + .addFields( | ||
| 90 | + {name: "모험섬", value: island_print, inline: true}, | ||
| 91 | + {name: "오늘의 콘텐츠", value: content_print, inline: true} | ||
| 92 | + ) | ||
| 93 | + | ||
| 94 | + interaction.reply({ embeds: [compassembed], allowedMentions: {repliedUser: false} }); | ||
| 95 | + }) | ||
| 80 | }) | 96 | }) |
| 81 | }, | 97 | }, |
| 82 | }; | 98 | }; | ... | ... |
| ... | @@ -11,7 +11,29 @@ module.exports ={ | ... | @@ -11,7 +11,29 @@ module.exports ={ |
| 11 | .addStringOption((option) => | 11 | .addStringOption((option) => |
| 12 | option.setName('클래스') | 12 | option.setName('클래스') |
| 13 | .setDescription('각인 정보를 알고싶은 직업') | 13 | .setDescription('각인 정보를 알고싶은 직업') |
| 14 | - .setRequired(true)), | 14 | + .setRequired(true) |
| 15 | + .addChoices({ name: '디스트로이어', value: '디스트로이어'}) | ||
| 16 | + .addChoices({ name: '버서커', value: '버서커'}) | ||
| 17 | + .addChoices({ name: '워로드', value: '워로드'}) | ||
| 18 | + .addChoices({ name: '홀리나이트', value: '홀리나이트'}) | ||
| 19 | + .addChoices({ name: '기공사', value: '기공사'}) | ||
| 20 | + .addChoices({ name: '배틀마스터', value: '배틀마스터'}) | ||
| 21 | + .addChoices({ name: '스트라이커', value: '스트라이커'}) | ||
| 22 | + .addChoices({ name: '인파이터', value: '인파이터'}) | ||
| 23 | + .addChoices({ name: '창술사', value: '창술사'}) | ||
| 24 | + .addChoices({ name: '건슬리어', value: '건슬리어'}) | ||
| 25 | + .addChoices({ name: '데빌헌터', value: '데빌헌터'}) | ||
| 26 | + .addChoices({ name: '블래스터', value: '블래스터'}) | ||
| 27 | + .addChoices({ name: '스카우터', value: '스카우터'}) | ||
| 28 | + .addChoices({ name: '호크아이', value: '호크아이'}) | ||
| 29 | + .addChoices({ name: '바드', value: '바드'}) | ||
| 30 | + .addChoices({ name: '서머너', value: '서머너'}) | ||
| 31 | + .addChoices({ name: '소서리스', value: '소서리스'}) | ||
| 32 | + .addChoices({ name: '아르카나', value: '아르카나'}) | ||
| 33 | + .addChoices({ name: '데모닉', value: '데모닉'}) | ||
| 34 | + .addChoices({ name: '리퍼', value: '리퍼'}) | ||
| 35 | + .addChoices({ name: '블레이드', value: '블레이드'}) | ||
| 36 | + .addChoices({ name: '도화가', value: '도화가'})), | ||
| 15 | async execute(interaction){ | 37 | async execute(interaction){ |
| 16 | const class_name = interaction.options.getString('클래스'); | 38 | const class_name = interaction.options.getString('클래스'); |
| 17 | 39 | ||
| ... | @@ -41,7 +63,6 @@ module.exports ={ | ... | @@ -41,7 +63,6 @@ module.exports ={ |
| 41 | case '리퍼' : job_number = 6; class_number = 3; break; | 63 | case '리퍼' : job_number = 6; class_number = 3; break; |
| 42 | case '블레이드' : job_number = 6; class_number = 4; break; | 64 | case '블레이드' : job_number = 6; class_number = 4; break; |
| 43 | case '도화가' : job_number = 7; class_number = 2; break; | 65 | case '도화가' : job_number = 7; class_number = 2; break; |
| 44 | - default: interaction.reply('올바른 직업명을 입력해주세요!'); return; | ||
| 45 | } | 66 | } |
| 46 | const tempembed = new MessageEmbed() | 67 | const tempembed = new MessageEmbed() |
| 47 | .setColor('#F7819F') | 68 | .setColor('#F7819F') |
| ... | @@ -53,7 +74,14 @@ module.exports ={ | ... | @@ -53,7 +74,14 @@ module.exports ={ |
| 53 | const page = await browser.newPage(); | 74 | const page = await browser.newPage(); |
| 54 | await page.goto('https://loawa.com/rank'); | 75 | await page.goto('https://loawa.com/rank'); |
| 55 | 76 | ||
| 56 | - await page.click(`#contents > article > form > div > div:nth-child(${job_number}) > div > div:nth-child(2) > div > label:nth-child(${class_number}) > span`); | 77 | + if(job_number ==7 && class_number ==2){ |
| 78 | + let button = await page.$(`#contents > article > form > div > div:nth-child(7) > div > div:nth-child(2) > div > label.checkbox-group.server-width > span`); | ||
| 79 | + await button.evaluate(b => b.click()); | ||
| 80 | + } else{ | ||
| 81 | + let button = await page.$(`#contents > article > form > div > div:nth-child(${job_number}) > div > div:nth-child(2) > div > label:nth-child(${class_number}) > span`); | ||
| 82 | + await button.evaluate(b => b.click()); | ||
| 83 | + } | ||
| 84 | + | ||
| 57 | await page.waitForSelector('#contents > article > table > tbody > tr:nth-child(20) > td:nth-child(11) > a > svg > path'); | 85 | await page.waitForSelector('#contents > article > table > tbody > tr:nth-child(20) > td:nth-child(11) > a > svg > path'); |
| 58 | await page.waitForTimeout(1000); | 86 | await page.waitForTimeout(1000); |
| 59 | 87 | ... | ... |
-
Please register or login to post a comment