You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Haha-Yes/commands/utility/translate.js

75 lines
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;