diff --git a/.env.example b/.env.example index e9a86354..6bac0e90 100644 --- a/.env.example +++ b/.env.example @@ -51,7 +51,6 @@ WEBSTER_KEY= WHATANIME_KEY= XIAO_GITHUB_REPO_NAME= XIAO_GITHUB_REPO_USERNAME= -YANDEX_KEY= YODA_KEY= # Imgur album IDs diff --git a/assets/json/translate.json b/assets/json/translate.json deleted file mode 100644 index 8cedc0da..00000000 --- a/assets/json/translate.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "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/text-edit/translate.js b/commands/text-edit/translate.js index 416f916a..aa18f1b4 100644 --- a/commands/text-edit/translate.js +++ b/commands/text-edit/translate.js @@ -1,15 +1,14 @@ const Command = require('../../structures/Command'); const { MessageEmbed } = require('discord.js'); -const request = require('node-superfetch'); +const translate = require('@vitalets/google-translate-api'); const { list } = require('../../util/Util'); -const codes = require('../../assets/json/translate'); -const { YANDEX_KEY } = process.env; +const codes = translate.languages; module.exports = class TranslateCommand extends Command { constructor(client) { super(client, { name: 'translate', - aliases: ['yandex', 'yandex-translate'], + aliases: ['google-translate'], group: 'text-edit', memberName: 'translate', description: 'Translates text to a specific language.', @@ -17,8 +16,8 @@ module.exports = class TranslateCommand extends Command { clientPermissions: ['EMBED_LINKS'], credit: [ { - name: 'Yandex.Translate API', - url: 'https://tech.yandex.com/translate/doc/dg/reference/translate-docpage/' + name: 'Google Translate', + url: 'https://translate.google.com/' } ], args: [ @@ -47,7 +46,7 @@ module.exports = class TranslateCommand extends Command { key: 'base', prompt: `Which language would you like to use as the base? Either ${list(Object.keys(codes), 'or')}.`, type: 'string', - default: '', + default: 'auto', validate: base => { const value = base.toLowerCase(); if (codes[value] || Object.keys(codes).find(key => codes[key].toLowerCase() === value)) return true; @@ -65,19 +64,12 @@ module.exports = class TranslateCommand extends Command { async run(msg, { text, target, base }) { try { - const { body } = await request - .get('https://translate.yandex.net/api/v1.5/tr.json/translate') - .query({ - key: YANDEX_KEY, - text, - lang: base ? `${base}-${target}` : target - }); - const lang = body.lang.split('-'); + const { text: result, from } = await translate(text, { to: target, from: base }); const embed = new MessageEmbed() - .setColor(0xFF0000) - .setFooter('Powered by Yandex.Translate', 'https://i.imgur.com/HMpH9sq.png') - .addField(`❯ From: ${codes[lang[0]]}`, text) - .addField(`❯ To: ${codes[lang[1]]}`, body.text[0]); + .setColor(0x4285F4) + .setFooter('Powered by Google Translate', 'https://i.imgur.com/h3RoHyp.png') + .addField(`❯ From: ${codes[from.language.iso]}`, from.text.value || text) + .addField(`❯ To: ${codes[target]}`, result); return msg.embed(embed); } catch (err) { return msg.reply(`Oh no, an error occurred: \`${err.message}\`. Try again later!`); diff --git a/package.json b/package.json index 055846ce..abf6b3eb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xiao", - "version": "108.1.0", + "version": "109.0.0", "description": "Your personal server companion.", "main": "Xiao.js", "scripts": { @@ -31,6 +31,7 @@ "node": ">=12" }, "dependencies": { + "@vitalets/google-translate-api": "^3.0.0", "canvas": "^2.6.0", "cheerio": "^1.0.0-rc.3", "common-tags": "^1.8.0", @@ -39,7 +40,7 @@ "discord.js-commando": "github:discordjs/Commando", "dotenv": "^8.2.0", "gifencoder": "^2.0.1", - "mathjs": "^6.2.3", + "mathjs": "^6.2.5", "moment": "^2.24.0", "moment-duration-format": "^2.3.2", "moment-timezone": "^0.5.27",