diff --git a/assets/json/translate.json b/assets/json/translate.json new file mode 100644 index 00000000..d283e30b --- /dev/null +++ b/assets/json/translate.json @@ -0,0 +1,95 @@ +{ + "az": "Azerbaijan", + "sq": "Albanian", + "am": "Amharic", + "en": "English", + "ar": "Arabic", + "hy": "Armenian", + "af": "Afrikaans", + "eu": "Basque", + "ba": "Bashkir", + "be": "Belarusian", + "bn": "Bengali", + "my": "Burmese", + "bg": "Bulgarian", + "bs": "Bosnian", + "cy": "Welsh", + "hu": "Hungarian", + "vi": "Vietnamese", + "ht": "Haitian (Creole)", + "gl": "Galician", + "nl": "Dutch", + "mrj": "Hill Mari", + "el": "Greek", + "ka": "Georgian", + "gu": "Gujarati", + "da": "Danish", + "he": "Hebrew", + "yi": "Yiddish", + "id": "Indonesian", + "ga": "Irish", + "it": "Italian", + "is": "Icelandic", + "es": "Spanish", + "kk": "Kazakh", + "kn": "Kannada", + "ca": "Catalan", + "ky": "Kyrgyz", + "zh": "Chinese", + "ko": "Korean", + "xh": "Xhosa", + "km": "Khmer", + "lo": "Laotian", + "la": "Latin", + "lv": "Latvian", + "lt": "Lithuanian", + "lb": "Luxembourgish", + "mg": "Malagasy", + "ms": "Malay", + "ml": "Malayalam", + "mt": "Maltese", + "mk": "Macedonian", + "mi": "Maori", + "mr": "Marathi", + "mhr": "Mari", + "mn": "Mongolian", + "de": "German", + "ne": "Nepali", + "no": "Norwegian", + "pa": "Punjabi", + "pap": "Papiamento", + "fa": "Persian", + "pl": "Polish", + "pt": "Portuguese", + "ro": "Romanian", + "ru": "Russian", + "ceb": "Cebuano", + "sr": "Serbian", + "si": "Sinhala", + "sk": "Slovakian", + "sl": "Slovenian", + "sw": "Swahili", + "su": "Sundanese", + "tg": "Tajik", + "th": "Thai", + "tl": "Tagalog", + "ta": "Tamil", + "tt": "Tatar", + "te": "Telugu", + "tr": "Turkish", + "udm": "Udmurt", + "uz": "Uzbek", + "uk": "Ukranian", + "ur": "Urdu", + "fi": "Finnish", + "fr": "French", + "hi": "Hindi", + "hr": "Croatian", + "cs": "Czech", + "sv": "Swedish", + "gd": "Scottish", + "et": "Estonian", + "eo": "Esperanto", + "jv": "Javanese", + "ja": "Japanese" +} diff --git a/commands/textedit/translate.js b/commands/textedit/translate.js new file mode 100644 index 00000000..95605937 --- /dev/null +++ b/commands/textedit/translate.js @@ -0,0 +1,68 @@ +const { Command } = require('discord.js-commando'); +const { RichEmbed } = require('discord.js'); +const snekfetch = require('snekfetch'); +const codes = require('../../assets/json/translate'); +const { YANDEX_KEY } = process.env; + +module.exports = class TranslateCommand extends Command { + constructor(client) { + super(client, { + name: 'translate', + group: 'textedit', + memberName: 'translate', + description: 'Translates text to a specified language.', + details: '**Codes:** https://tech.yandex.com/translate/doc/dg/concepts/api-overview-docpage/#languages', + args: [ + { + key: 'text', + prompt: 'What text would you like to translate?', + type: 'string' + }, + { + key: 'to', + prompt: 'Which language is being translated to?', + type: 'string', + validate: to => { + if (codes[to.toLowerCase()] || Object.values(codes).map(c => c.toLowerCase()).includes(to.toLowerCase())) return true; + return 'Invalid Language Code or Language Name. Use `help translate` for a list of codes.'; + }, + parse: to => to.toLowerCase() + }, + { + key: 'from', + prompt: 'Which language is being translated from?', + type: 'string', + validate: from => { + if (codes[from.toLowerCase()] || Object.values(codes).map(c => c.toLowerCase()).includes(from.toLowerCase())) return true; + return 'Invalid Language Code or Language Name. Use `help translate` for a list of codes.'; + }, + parse: from => from.toLowerCase(), + default: '' + } + ] + }); + } + + async run(msg, args) { + const { text, to, from } = args; + try { + const { body } = await snekfetch + .get('https://translate.yandex.net/api/v1.5/tr.json/translate') + .query({ + key: YANDEX_KEY, + text, + lang: from ? `${from}-${to}` : to + }); + const lang = body.lang.split('-'); + const embed = new RichEmbed() + .setColor(0x00AE86) + .addField(`From: ${codes[lang[0]]}`, + text) + .addField(`To: ${codes[lang[1]]}`, + body.text[0]); + return msg.embed(embed); + } catch (err) { + return msg.say(`${err.name}: ${err.message}`); + } + } +}; diff --git a/html/carbonfeat.html b/html/carbonfeat.html index f47359a6..4b29e042 100644 --- a/html/carbonfeat.html +++ b/html/carbonfeat.html @@ -56,6 +56,7 @@