75 lines
No EOL
2.2 KiB
JavaScript
75 lines
No EOL
2.2 KiB
JavaScript
const { Command } = require('discord-akairo');
|
|
const axios = require('axios');
|
|
|
|
const { deepl } = require('../../config.json');
|
|
|
|
class translateCommand extends Command {
|
|
constructor() {
|
|
super('translate', {
|
|
aliases: ['translate', 'trn'],
|
|
category: 'utility',
|
|
clientPermissions: ['SEND_MESSAGES', 'EMBED_LINKS'],
|
|
args: [
|
|
{
|
|
id: 'language',
|
|
type: ['bg', 'cs', 'da', 'de', 'el', 'en', 'es', 'et', 'fi', 'fr', 'hu', 'it', 'ja', 'lt', 'lv', 'nl', 'pl', 'pt', 'ro', 'ru', 'sk', 'sl', 'sv', 'zh'],
|
|
prompt: {
|
|
start: 'In what language do you want to translate it to',
|
|
retry: 'That\'s not a valid language! try again.'
|
|
},
|
|
default: 'en'
|
|
},
|
|
{
|
|
id: 'text',
|
|
type: 'string',
|
|
prompt: {
|
|
start: 'What sentences/words do you want to translate?',
|
|
},
|
|
match: 'rest'
|
|
}
|
|
],
|
|
description: {
|
|
content: 'Translate what you send in your desired language. You can find the language code here: https://tech.yandex.com/translate/doc/dg/concepts/api-overview-docpage/',
|
|
usage: '[language code] [Text to translate]',
|
|
examples: ['fr "What are we doing today?"', 'en "Que faisons-nous aujourd\'hui?"']
|
|
}
|
|
});
|
|
}
|
|
|
|
async exec(message, args) {
|
|
let language = args.language.toUpperCase();
|
|
let text = args.text;
|
|
|
|
const params = new URLSearchParams();
|
|
params.append('auth_key', deepl);
|
|
params.append('text', text);
|
|
params.append('target_lang', language);
|
|
|
|
|
|
axios.post('https://api-free.deepl.com/v2/translate', params, {
|
|
headers: {
|
|
'Content-Type': 'application/x-www-form-urlencoded'
|
|
}
|
|
}).then(response => {
|
|
console.log(response.data.translations[0].text);
|
|
|
|
const data = response.data.translations[0];
|
|
|
|
const translationEmbed = this.client.util.embed()
|
|
.setColor(message.member ? message.member.displayHexColor : 'NAVY')
|
|
.setTitle('Asked for the following translation:')
|
|
.setURL('https://www.deepl.com/translator')
|
|
.setAuthor(message.author.username)
|
|
.addField('Translated text', data.text)
|
|
.addField('Translated from', data.detected_source_language)
|
|
.setTimestamp()
|
|
.setFooter('Powered by DeepL');
|
|
|
|
return message.channel.send(translationEmbed);
|
|
});
|
|
|
|
|
|
}
|
|
}
|
|
|
|
module.exports = translateCommand; |