From 9e43b0123a042c308d2571c8879100bbb00a1c57 Mon Sep 17 00:00:00 2001 From: almeidx Date: Mon, 21 Sep 2020 15:12:49 +0100 Subject: [PATCH 1/2] added command base --- src/apis/MDN.js | 30 +++++++++++++++++++++++ src/commands/utility/mdn.js | 43 +++++++++++++++++++++++++++++++++ src/locales/en-US/commands.json | 7 ++++++ src/utils/Constants.js | 1 + 4 files changed, 81 insertions(+) create mode 100644 src/apis/MDN.js create mode 100644 src/commands/utility/mdn.js diff --git a/src/apis/MDN.js b/src/apis/MDN.js new file mode 100644 index 000000000..1093de673 --- /dev/null +++ b/src/apis/MDN.js @@ -0,0 +1,30 @@ +const { APIWrapper } = require('../') +const axios = require('axios') + +const API_URL = 'https://mdn.almeidx.me/api' + +module.exports = class MDN extends APIWrapper { + constructor () { + super({ + name: 'mdn' + }) + } + + async search (name) { + const res = await axios.get(`${API_URL}/search`, { + params: { + q: encodeURIComponent(name) + } + }) + return res.data + } + + async getInfo (link) { + const res = await axios.get(`${API_URL}/info`, { + params: { + l: link + } + }) + return res.data + } +} diff --git a/src/commands/utility/mdn.js b/src/commands/utility/mdn.js new file mode 100644 index 000000000..49ee57d9e --- /dev/null +++ b/src/commands/utility/mdn.js @@ -0,0 +1,43 @@ +const { SearchCommand, SwitchbladeEmbed, Constants } = require('../..') +const moment = require('moment') + +const BASE_URL = 'https://developer.mozilla.org' + +module.exports = class MDN extends SearchCommand { + constructor (client) { + super({ + name: 'mdn', + aliases: ['mdn', 'mdndoc', 'mdndocumentation', 'mozilladevelopernetwork'], + requirements: { apis: ['mdn'] }, + embedColor: Constants.MDN_COLOR, + embedLogoURL: 'https://i.imgur.com/6IzokAO.jpeg' + }, client) + } + + search (_, query) { + return this.client.apis.mdn.search(query) + } + + searchResultFormatter (i) { + return `[${i.name}](${BASE_URL}${i.url})` + } + + async handleResult ({ t, author, channel, language }, info) { + moment.locale(language) + channel.startTyping() + + const { description, name, url, parameters, returns, syntax } = await this.client.apis.mdn.getInfo(info.url) + + const embed = new SwitchbladeEmbed(author) + .setColor(this.embedColor) + .setAuthor(t('commands:mdn.mdn'), this.embedLogoURL, BASE_URL) + .setTitle(name) + .setURL(url) + .setDescription(description) + .addField(t('commands:mdn.syntax'), `\`\`\`js\n${syntax}\n\`\`\`\n${parameters}`) + + if (returns) embed.addField(t('commands:mdn.returns'), returns) + + channel.send(embed).then(() => channel.stopTyping(true)) + } +} diff --git a/src/locales/en-US/commands.json b/src/locales/en-US/commands.json index 4610349e6..11227c7ba 100644 --- a/src/locales/en-US/commands.json +++ b/src/locales/en-US/commands.json @@ -1756,5 +1756,12 @@ "by": "by {{authors}}", "installs": "{{count}} installs", "license": "License" + }, + "mdn": { + "commandDescription": "Seaches for JavaScript documentation on the Mozilla Developer Network", + "commandUsage": "", + "syntax": "Syntax", + "returns": "Returns", + "mdn": "Mozilla Developer Network" } } diff --git a/src/utils/Constants.js b/src/utils/Constants.js index 10ce5b6a3..f67c6b542 100644 --- a/src/utils/Constants.js +++ b/src/utils/Constants.js @@ -30,6 +30,7 @@ module.exports = { CHOCOLATEY_COLOR: '#7eb5e2', SNAPCRAFT_COLOR: '82BEA0', JETBRAINS_PLUGIN: '#d44386', + MDN_COLOR: '#88d1f1', // Emojis From 0c13d95b4413c367cb395a12e1468c61b7914cc0 Mon Sep 17 00:00:00 2001 From: almeidx Date: Mon, 21 Sep 2020 15:15:37 +0100 Subject: [PATCH 2/2] removed duplicated alias --- src/commands/utility/mdn.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/utility/mdn.js b/src/commands/utility/mdn.js index 49ee57d9e..d127f2f32 100644 --- a/src/commands/utility/mdn.js +++ b/src/commands/utility/mdn.js @@ -7,7 +7,7 @@ module.exports = class MDN extends SearchCommand { constructor (client) { super({ name: 'mdn', - aliases: ['mdn', 'mdndoc', 'mdndocumentation', 'mozilladevelopernetwork'], + aliases: ['mdndoc', 'mdndocumentation', 'mozilladevelopernetwork'], requirements: { apis: ['mdn'] }, embedColor: Constants.MDN_COLOR, embedLogoURL: 'https://i.imgur.com/6IzokAO.jpeg'