남우성

Merge branch 'feature/compass' into develop

1 +const { SlashCommandBuilder } = require('@discordjs/builders');
2 +const { MessageEmbed } = require('discord.js');
3 +const axios = require("axios");
4 +const cheerio = require("cheerio");
5 +
6 +
7 +module.exports = {
8 + data: new SlashCommandBuilder()
9 + .setName('나침반')
10 + .setDescription('오늘 이용가능한 프로키온의 나침반 스케줄 정보를 조회합니다.'),
11 + async execute(interaction) {
12 + const getHtml = async() => {
13 + try {
14 + return await axios.get("https://www.loawa.com/")
15 + } catch (error){
16 + console.error(error);
17 + }
18 + }
19 +
20 + await getHtml()
21 + .then(html => {
22 + const $ = cheerio.load(html.data);
23 +
24 + let info_island = [];
25 + let info_contents = [];
26 + let All_contents = ["유령선", "카오스게이트", "필드 보스"];
27 + const $IslandList = $("ul.today-quest-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 +
37 + $ContentList.each(function(i, elem){
38 + for(var i = 0; i < All_contents.length; i++){
39 + if($(this).find("h4.item-title span").text() === All_contents[i]){
40 + info_contents.push($(this).find("h4.item-title span").text());
41 + }
42 + }
43 + })
44 +
45 + let island_print = "";
46 + for(var i = 0; i < info_island.length; i++){
47 + let rewordImage = "";
48 + if(info_island[i].reword === "카드"){
49 + rewordImage = "<:cardpack:976389392702791710>"
50 + } else if(info_island[i].reword === "골드"){
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 +
60 + let content_print = "";
61 +
62 + for(var i = 0; i < info_contents.length; i++){
63 + content_print += `${info_contents[i]}\n`;
64 + }
65 +
66 + if(!content_print){
67 + content_print = "오늘은 이용가능한 컨텐츠가 없어요";
68 + }
69 +
70 + const termembed = new MessageEmbed()
71 + .setColor('#008B8B')
72 + .setTitle('프로키온의 나침반')
73 + .setDescription(`오늘 이용가능한 컨텐츠 정보`)
74 + .addFields(
75 + {name: "모험섬", value: island_print, inline: true},
76 + {name: "오늘의 콘텐츠", value: content_print, inline: true}
77 + )
78 +
79 + interaction.reply({ embeds: [termembed], allowedMentions: {repliedUser: false} });
80 + })
81 + },
82 +};
...@@ -21,7 +21,12 @@ module.exports = { ...@@ -21,7 +21,12 @@ module.exports = {
21 .addField('/도움 <명령어>', '명령어 상세 설명', true) 21 .addField('/도움 <명령어>', '명령어 상세 설명', true)
22 .addField('/마리샵', '마리샵 정보 조회', true) 22 .addField('/마리샵', '마리샵 정보 조회', true)
23 .addField('/정보 <닉네임>', '전투정보실 조회', true) 23 .addField('/정보 <닉네임>', '전투정보실 조회', true)
24 +<<<<<<< HEAD
24 .addField('/로아와 <닉네임>', '로아와 조회', true); 25 .addField('/로아와 <닉네임>', '로아와 조회', true);
26 +=======
27 + .addField('/로아와 <닉네임>', '로아와 조회', true)
28 + .addField('/나침반', '금일 스케줄 조회', true);
29 +>>>>>>> feature/compass
25 await interaction.reply({embeds: [helpEmbed], allowedMentions: {repliedUser: false}}); 30 await interaction.reply({embeds: [helpEmbed], allowedMentions: {repliedUser: false}});
26 } else if(helpCommand === "도움") { 31 } else if(helpCommand === "도움") {
27 const helpEmbed = new MessageEmbed() 32 const helpEmbed = new MessageEmbed()
...@@ -47,6 +52,15 @@ module.exports = { ...@@ -47,6 +52,15 @@ module.exports = {
47 .setTitle(`/로아와 <닉네임> 사용방법`) 52 .setTitle(`/로아와 <닉네임> 사용방법`)
48 .setDescription(`<닉네임>에 해당하는 캐릭터의 로아와 정보를 브라우저로 엽니다.`); 53 .setDescription(`<닉네임>에 해당하는 캐릭터의 로아와 정보를 브라우저로 엽니다.`);
49 await interaction.reply({embeds: [helpEmbed], allowedMentions: {repliedUser: false}}); 54 await interaction.reply({embeds: [helpEmbed], allowedMentions: {repliedUser: false}});
55 +<<<<<<< HEAD
56 +=======
57 + } else if(helpCommand === "나침반"){
58 + const helpEmbed = new MessageEmbed()
59 + .setColor('#0099ff')
60 + .setTitle(`/나침반 사용방법`)
61 + .setDescription(`금일 이용가능한 모험섬과 콘텐츠 정보를 제공합니다.`);
62 + await interaction.reply({embeds: [helpEmbed], allowedMentions: {repliedUser: false}});
63 +>>>>>>> feature/compass
50 } else { 64 } else {
51 await interaction.reply("해당 명령어는 없습니다."); 65 await interaction.reply("해당 명령어는 없습니다.");
52 } 66 }
......