Showing
2 changed files
with
107 additions
and
2 deletions
Commands/Example/help.js
0 → 100644
1 | +const Discord = require("discord.js"); | ||
2 | +exports.run = async (client, msg, args, prefix) => { | ||
3 | + if (!args[0]) { | ||
4 | + const categorys = client.category; // bot.js에 있는 client.category 를 categorys로 선언하였습니다. | ||
5 | + let Commands = new Discord.MessageEmbed() | ||
6 | + .setAuthor(client.user.username + " 봇 명령어", client.user.displayAvatarURL()) | ||
7 | + .setColor("7289DA") | ||
8 | + .setFooter(`${prefix}도움 <명령어> 를 통하여 해당 명령어를 자세히 확인해보세요.`); | ||
9 | + for (const category of categorys) { // 위에서 선언한 것을 for문으로 category로 선언하였습니다. (반복문) | ||
10 | + /** | ||
11 | + * 위에 for문을 잠시 설명해드리자면 | ||
12 | + * categorys가 있는 만큼 반복을 하여 | ||
13 | + * categorys중에 하나를 category로 선언하여 아래의 코드를 작성한 것입니다. | ||
14 | + */ | ||
15 | + | ||
16 | + // console.log(client.commands.filter(el => el.config.category == category).keys()); | ||
17 | + let a = client.commands.filter(el => el.config.category == category).keys(); | ||
18 | + let arr = []; | ||
19 | + for (const i of a) { | ||
20 | + arr.push(i); | ||
21 | + } | ||
22 | + Commands.addField(category, `> **\`${arr.join(', ')}\`**`); | ||
23 | + /** | ||
24 | + * 소제목에는 카테고리 이름을 넣고 | ||
25 | + * 소 설명에는 이전에 client.commands를 컬랙션으로 지정한 것들을 불러와 필터를 시켜줍니다. | ||
26 | + * el로 선언하여 el이 어떤식으로 되어있냐면 | ||
27 | + * 이전에 명령어들에게 exports를 사용하여 모듈화 하였는데 그것들을 불러오게 됩니다. | ||
28 | + * 여러가지 있는데 그중에 하나만 뜯어서 보여드렸습니다. | ||
29 | + * { | ||
30 | + * run: [AsyncFunction], | ||
31 | + * config: { | ||
32 | + * name: "asd", | ||
33 | + * aliases: ["asd1", "asd2", "123"], | ||
34 | + * category: ["example"], | ||
35 | + * des: ["config 설명"], | ||
36 | + * use: ["튜토야 도움 <명령어>"] | ||
37 | + * } | ||
38 | + * } | ||
39 | + * 그러고 이제 config.category가 const로 선언한 category와 맞는지 확인 후 Array화 시킨 후 안에 있는 명령어들을 불러온 것입니다. | ||
40 | + */ | ||
41 | + } | ||
42 | + msg.reply({ embeds: [Commands] }); | ||
43 | + } else { | ||
44 | + if (client.commands.get(args[0])) { // 만약에 client.commands안에 args[0] 라는게 있다면 | ||
45 | + var command = client.commands.get(args[0]); // command 는 client.commands.get(args[0])로 선언해줍시다. | ||
46 | + } else if (client.aliases.get(args[0])) { // 만약에 client.aliases 안에 args[0] 라는게 있다면 | ||
47 | + let aliases = client.aliases.get(args[0]); // aliases 를 client.aliases.get(args[0])로 선언해주고 (왜냐하면 저기서 aliases를 불러오면 command 이름이 나오기 때문입니다.) | ||
48 | + var command = client.commands.get(aliases); // commands는 client.commands.get(aliases)으로 선언해줍시다. | ||
49 | + } else return msg.reply(`${args[0]} 명령어라는 것을 찾을 수 없어요...`); | ||
50 | + | ||
51 | + let config = command.config; | ||
52 | + let name = config.name; | ||
53 | + let aliases = config.aliases; | ||
54 | + let category = config.category; | ||
55 | + let description = config.des; | ||
56 | + let use = config.use; | ||
57 | + | ||
58 | + let Command = new Discord.MessageEmbed() | ||
59 | + .setTitle(`${name} 명령어`) | ||
60 | + .setColor("7289DA") | ||
61 | + .setDescription(`\`\`\`fix\n사용법: ${use}\`\`\``) | ||
62 | + .addField("명령어 설명", `**${description}**`, false) | ||
63 | + .addField("카테고리", `**${category}**`, true) | ||
64 | + .addField("공유하는 명령어", `**${aliases}**`, true); | ||
65 | + msg.reply({ embeds: [Command] }); | ||
66 | + } | ||
67 | +}; | ||
68 | + | ||
69 | +exports.config = { | ||
70 | + name: '도움말', | ||
71 | + aliases: ['도움', '명령어', 'commands', 'help'], | ||
72 | + category: ['example'], | ||
73 | + des: ['봇에 대한 명령어 리스트들을 불러옵니다.'], | ||
74 | + use: ['!도움말 <명령어>'] | ||
75 | +}; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | const { Client, Intents } = require('discord.js'); | 1 | const { Client, Intents } = require('discord.js'); |
2 | +const Discord = require("discord.js"); | ||
2 | const { token } = require('./config.json'); | 3 | const { token } = require('./config.json'); |
4 | +const fs = require('fs'); | ||
3 | 5 | ||
4 | const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] }); | 6 | const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] }); |
5 | 7 | ||
... | @@ -7,9 +9,37 @@ client.once('ready', () => { | ... | @@ -7,9 +9,37 @@ client.once('ready', () => { |
7 | console.log(`Logged in as ${client.user.tag}!`); | 9 | console.log(`Logged in as ${client.user.tag}!`); |
8 | }); | 10 | }); |
9 | 11 | ||
12 | +client.commands = new Discord.Collection(); | ||
13 | +client.aliases = new Discord.Collection(); | ||
14 | +client.category = ['example', 'stationery', 'translate', 'tts']; | ||
15 | + | ||
16 | +fs.readdirSync("./Commands/").forEach(dir => { | ||
17 | + const Filter = fs.readdirSync(`./Commands/${dir}`).filter(f => f.endsWith(".js")); | ||
18 | + Filter.forEach(file => { | ||
19 | + const cmd = require(`./Commands/${dir}/${file}`); | ||
20 | + client.commands.set(cmd.config.name, cmd); | ||
21 | + for (let alias of cmd.config.aliases) { | ||
22 | + client.aliases.set(alias, cmd.config.name); | ||
23 | + } | ||
24 | + }); | ||
25 | +}); | ||
26 | + | ||
27 | +function runCommand(command, message, args, prefix) { | ||
28 | + if (client.commands.get(command) || client.aliases.get(command)) { | ||
29 | + const cmd = client.commands.get(command) || client.commands.get(client.aliases.get(command)); | ||
30 | + if (cmd) cmd.run(client, message, args, prefix); | ||
31 | + } | ||
32 | +} | ||
33 | + | ||
10 | client.on('messageCreate', msg => { | 34 | client.on('messageCreate', msg => { |
11 | - if (msg.content === 'ping') { | 35 | + const prefix = "!"; |
12 | - msg.reply('Pong!'); | 36 | + if (!msg.content.startsWith(prefix)) return; |
37 | + let args = msg.content.slice(prefix.length).trim().split(/ +/g); | ||
38 | + let command = args.shift().toLowerCase(); | ||
39 | + try { | ||
40 | + runCommand(command, msg, args, prefix); | ||
41 | + } catch (e) { | ||
42 | + console.error(e); | ||
13 | } | 43 | } |
14 | }); | 44 | }); |
15 | 45 | ... | ... |
-
Please register or login to post a comment