2018-12-30 01:20:24 +01:00
const { Command } = require ( 'discord-akairo' ) ;
2018-12-02 01:46:24 +01:00
const Discord = require ( 'discord.js' ) ;
2018-12-30 01:20:24 +01:00
const fetch = require ( 'node-fetch' ) ;
2018-12-02 01:46:24 +01:00
const { yandexAPI } = require ( '../../config.json' ) ;
2018-12-02 01:34:15 +01:00
2018-12-30 01:20:24 +01:00
class TranslationCommand extends Command {
constructor ( ) {
super ( 'translation' , {
aliases : [ 'translation' , 'trn' ] ,
category : 'utility' ,
2018-12-31 20:56:13 +01:00
split : 'sticky' ,
2018-12-30 01:20:24 +01:00
description : 'Translate the text you send into the lanuguage you selected' ,
2018-12-02 01:34:15 +01:00
args : [
2018-12-02 04:26:22 +01:00
{
2018-12-30 01:20:24 +01:00
id : 'language' ,
2018-12-02 04:26:22 +01:00
type : 'string' ,
2018-12-30 01:20:24 +01:00
default : 'en'
2018-12-02 04:26:22 +01:00
} ,
2018-12-02 01:34:15 +01:00
{
2018-12-30 01:20:24 +01:00
id : 'text' ,
2018-12-02 01:34:15 +01:00
type : 'string' ,
}
2018-12-30 01:20:24 +01:00
] ,
description : {
2019-01-02 04:35:34 +01:00
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?' ]
}
2018-12-02 01:34:15 +01:00
} ) ;
}
2018-12-30 01:20:24 +01:00
async exec ( message , args ) {
let language = args . language ;
let text = args . text ;
2019-01-02 04:35:34 +01:00
2018-12-02 18:23:18 +01:00
let textURI = encodeURI ( text )
2019-01-02 04:35:34 +01:00
fetch ( ` https://translate.yandex.net/api/v1.5/tr.json/translate?key= ${ yandexAPI } &text= ${ textURI } &lang= ${ language } &options=1 ` , {
2018-12-02 01:34:15 +01:00
} ) . then ( ( response ) => {
2019-01-02 04:35:34 +01:00
return response . json ( ) ;
2018-12-30 01:20:24 +01:00
} ) . then ( ( response ) => {
2019-01-02 04:35:34 +01:00
if ( response . code == '502' )
return message . channel . send ( ` ${ response . message } , you probably didin't input the correct language code, you can check them here! https://tech.yandex.com/translate/doc/dg/concepts/api-overview-docpage/ ` )
else if ( response . code != '200' )
return message . channel . send ( 'An error has occured' )
const translationEmbed = new Discord . RichEmbed ( )
. setColor ( '#0099ff' )
. setTitle ( 'Asked for the following translation:' )
. setAuthor ( message . author . username )
. setDescription ( response . text [ 0 ] )
. addField ( 'Original text' , text )
. addField ( 'Translated from' , response . detected . lang )
. setTimestamp ( )
. setFooter ( 'Powered by Yandex.Translate ' ) ;
message . channel . send ( translationEmbed )
} ) ;
2018-12-30 01:20:24 +01:00
}
}
module . exports = TranslationCommand ;