@develable/rutapbot-d20
Version:
[KR] Rutap Bot will makes your discord life better!
112 lines (99 loc) • 5.1 kB
JavaScript
// node_modules
const Discord = require('discord.js');
const axios = require('axios');
// 자체 모듈
const timestamp = require('../../lib/timestamp.js');
const err_module = require('./../../lib/err_perform.js');
const sql = require('../../lib/dbaseconnector.js');
// settings
const d_settings = require('../../settings/default_settings.js');
// 명령어 모듈 한정 :: 명령어 설명 정의
exports.dscr = {
description : 'API by nekos.life\n태그를 붙이지 않을 경우, 랜덤으로 고양이 짤을 불러옵니다.\n\n2020년 이후로 nsfw 태그 기능 제공을 진행하지 않습니다.',
use : [`${d_settings.normal_prefix}네코 도움말`, `${d_settings.normal_prefix}네코 [태그]`]
}
// 명령어 치면 돌아가는 구역
exports.run = (dscl, message, args, opti) => {
/*
* !! ANNOUNCEMENT !!
* 2020-05-23 화향
* 논란이 일어날 경우를 대비하여 nsfw 기능 자체를 제거합니다
* 일단은 Develable DB에 태그 데이터만 남기고 코드는 전부 제거하는 방향으로 진행하겠습니다.
* 배포용 SQL 파일에도 nsfw 태그 제거 진행한 상태입니다.
* 만약에 nsfw 기능 되돌릴 일 있으면 프로젝트 리더한테 허가 받고 Gitlab 공지 작성일 직전 Commit 참고해서 복구 진행 해 주세요.
*/
let ImgEmbed = new Discord.RichEmbed()
.setFooter(`API & Image by. nekos.life\n${timestamp.returntime()}`)
.setColor(d_settings.embed_color);
// 도움말 경우
if (args[1] == "도움말" && ! args[2]) {
ImgEmbed.setTitle("네코 태그 도움말");
ImgEmbed.setDescription(`수위 짤 태그에 관한 도움말은 \`${d_settings.normal_prefix}네코 도움말 nsfw\`를 참고하세요.\n태그 설명은 정확하지 않을 수도 있습니다.`);
sql.connection.query("SELECT * FROM `neko_tags` WHERE nsfw=0", [], (err, rows, fields) => {
if (err) {
err_module.performerr(dscl, message, err);
return;
}
let ntags = "", gtags = "";
for (let i = 0; i < rows.length; i++) {
if (rows[i]['category'] == "일반") {
ntags = ntags + `- **${rows[i]['kr']}** (${rows[i]['en']}) : ${rows[i]['des']}\n`;
} else {
gtags = gtags + `- **${rows[i]['kr']}** (${rows[i]['en']}) : ${rows[i]['des']}\n`;
}
}
ImgEmbed.addField("분류 : 일반", ntags, false);
ImgEmbed.addField("분류 : 움짤", gtags, false);
message.channel.send(ImgEmbed);
});
return;
}
// 태그 미입력
if (! args[1]) {
let requrl = `https://nekos.life/api/v2/img/neko`;
axios.get(requrl)
.then((res) => {
if (res.status != 200 || res['data']['url'] == undefined) {
message.reply(`nekos.life api 연결 실패.\`\`\`Markdown\n- url : ${requrl}\n- statsCode : ${res.status}\n- siteData--msg : ${res['data']['msg']}\`\`\``);
return;
}
ImgEmbed.setTitle(`태그 : neko (네코)`);
ImgEmbed.setImage(res['data']['url']);
message.channel.send(ImgEmbed).then(() => {
message.channel.send(`태그를 입력하지 않았습니다.\n\`${d_settings.normal_prefix}네코 도움말\`을 입력하여 태그를 찾아보세요.`);
});
}).catch((err) => {
message.reply(`nekos.life api 연결 실패.\`\`\`Markdown\n- url : ${requrl}\n- ${err}\`\`\``);
return;
});
return;
}
sql.connection.query("SELECT * FROM `neko_tags` WHERE kr = ? OR en = ?", [args[1], args[1]], (err, rows, fields) => {
if (err) {
err_module.performerr(dscl, message, err);
return;
}
if (rows[0] == undefined) {
message.reply(`유효하지 않은 태그입니다.\n\`${d_settings.normal_prefix}네코 도움말\`로 태그를 찾아보세요.`);
return;
}
if (rows[0]['nsfw']) {
message.reply("해당 태그는 이용할 수 없습니다.");
return;
}
let requrl = `https://nekos.life/api/v2/img/${rows[0]['en']}`;
axios.get(requrl)
.then((res) => {
if (res.status != 200 || res['data']['msg'] != undefined) {
message.reply(`nekos.life api 연결 실패.\`\`\`Markdown\n- url : ${requrl}\n- statsCode : ${res.status}\n- siteData : ${res['data']}\`\`\``);
return;
}
ImgEmbed.setTitle(`태그 : ${rows[0]['en']} (${rows[0]['kr']})`);
ImgEmbed.setImage(res['data']['url']);
message.channel.send(ImgEmbed);
}).catch((err) => {
message.reply(`nekos.life api 연결 실패.\`\`\`Markdown\n- url : ${requrl}\n- ${err}\`\`\``);
return;
});
});
}