남우성

Merge branch 'release3.0'

config.json
\ No newline at end of file
......@@ -23,7 +23,7 @@ module.exports = {
let info_island = [];
let info_contents = [];
let All_contents = ["유령선", "카오스게이트", "필드 보스"];
let All_contents = ["유령선", "카오스 게이트"];
const $IslandList = $("ul.today-quest-list").children("li.list");
const $ContentList = $("ul.item-list").children("li.list");
......
const { SlashCommandBuilder } = require('@discordjs/builders');
const { MessageEmbed } = require('discord.js');
const axios = require("axios");
const cheerio = require("cheerio");
module.exports ={
data: new SlashCommandBuilder()
.setName('공략')
.setDescription('로스트아크 인벤의 군단장 레이드 공략 글 정보를 소개합니다.')
.addStringOption((option) =>
option.setName('레이드')
.setDescription('군단장 레이드 이름')
.setRequired(true)
.addChoices({ name: "발탄", value: "발탄"})
.addChoices({ name: "비아키스", value: "비아키스"})
.addChoices({ name: "쿠크세이튼", value: "쿠크세이튼"})
.addChoices({ name: "아브렐슈드", value: "아브렐슈드"})),
async execute(interaction){
const rade_name = interaction.options.getString('레이드');
const getHtml = async() => {
try {
return await axios.get("https://lostark.inven.co.kr/")
} catch (error){
console.error(error);
}
}
await getHtml()
.then(html => {
const $ = cheerio.load(html.data);
const $radeList = $("div.menu_item01 div.item_body ul.list").children("li.row");
let rade_info = [];
let rade_url = [];
$radeList.each(function(i, elem){
if($(this).text().indexOf(rade_name) != -1){
rade_info.push($(this).text());
rade_url.push($(this).find('a').attr('href'));
}
})
let rade_print = "";
for(var i = 0; i < rade_info.length; i++){
rade_print += `[${rade_info[i]}](${rade_url[i]})\n`;
}
const guideembed = new MessageEmbed()
.setColor('#6FF3E0')
.setTitle("공략 정보")
.setDescription(rade_print)
interaction.reply({ embeds: [guideembed], allowedMentions: {repliedUser: false} });
})
}
}
\ No newline at end of file
......@@ -24,7 +24,9 @@ module.exports = {
.addField('/정보 <닉네임>', '전투정보실 조회', true)
.addField('/로아와 <닉네임>', '로아와 조회', true)
.addField('/나침반', '금일 스케줄 조회', true)
.addField('/용어 <단어>', '로스트아크 용어 설명', true);
.addField('/용어 <단어>', '로스트아크 용어 설명', true)
.addField('/각인 <클래스>', '클래스 별 각인 분석 정보 제공', true)
.addField('/공략 <레이드>', '군단장 레이드 공략 글 정보 제공', true);
await interaction.reply({embeds: [helpEmbed], allowedMentions: {repliedUser: false}});
} else if(helpCommand === "도움") {
const helpEmbed = new MessageEmbed()
......@@ -65,9 +67,21 @@ module.exports = {
} else if(helpCommand === "용어"){
const helpEmbed = new MessageEmbed()
.setColor('#0099ff')
.setTitle(`/용어 사용방법`)
.setTitle(`/용어 <단어> 사용방법`)
.setDescription(`<단어>에 해당하는 로스트아크 용어 설명을 제공합니다.`);
await interaction.reply({embeds: [helpEmbed], allowedMentions: {repliedUser: false}});
} else if(helpCommand === "각인"){
const helpEmbed = new MessageEmbed()
.setColor('#0099ff')
.setTitle(`/각인 <클래스> 사용방법`)
.setDescription(`<클래스>에 해당하는 로아와 상위 20명의 각인 정보를 분석하고 제공합니다.`);
await interaction.reply({embeds: [helpEmbed], allowedMentions: {repliedUser: false}});
} else if(helpCommand === "공략") {
const helpEmbed = new MessageEmbed()
.setColor('#0099ff')
.setTitle(`/공략 <레이드> 사용방법`)
.setDescription(`<레이드>에 해당하는 로스트아크 인벤 사이트의 공략 글 정보를 제공합니다.`);
await interaction.reply({embeds: [helpEmbed], allowedMentions: {repliedUser: false}});
} else {
await interaction.reply("해당 명령어는 없습니다.");
}
......
{
"clientId": "951774447977771068",
"token": "OTUxNzc0NDQ3OTc3NzcxMDY4.YisXBw.GRzmw_os4hM2yHsEqTl5CyQN30A",
"guildIds": ["951774261612265522", "915096999152484393", "917734102466195507"]
}
\ No newline at end of file
......@@ -20,11 +20,22 @@ const rest = new REST({ version: "9" }).setToken(token);
(async () => {
guildIds.map(async (guildId) => {
try {
await rest.put(Routes.applicationGuildCommands(clientId, guildId), {body: commands});
await rest.put(Routes.applicationGuildCommands(clientId, guildId), {body: {}});
console.log(`${guildId} 서버 성공`);
}
catch (error) {
console.error(error);
}
});
try {
await rest.put(
Routes.applicationCommands(clientId),
{ body: commands },
);
console.log('글로벌 커맨드 등록 성공');
} catch (error) {
console.error(error);
}
})();
\ No newline at end of file
......