UNPKG

pandoapi

Version:

API interna para los bots de PandoTeam

81 lines (57 loc) 3.13 kB
async function tts(client, str, message) { const Discord = require('discord.js'); const { Readable } = require('stream'); require('ffmpeg-static'); require('opusscript'); if(!client || !str || !message) return ('Api-Error on(Parameters) : No ha proporcionado los parametros necesarios.'); if(!client.user) return ('Api-Error on(getClientUser) : No se pudo obtener el usuario del cliente.'); if(!client.user.id) return ('Api-Error on(getClientUserID) : No se pudo obtener la ID del cliente.'); const authorization = require('../authorized.js'); const authorize = await authorization.authorize(client); if(authorize === false) return ('Api-Error on(Authorization) : El cliente no está autorizado para usar este servicio.'); if(typeof str !== 'string') return ('Api-Error on(validString) : Los argumentos tienen que ser de tipo string'); if (str.length >= 200) { let array = Discord.Util.splitMessage(str, { char: '', maxLength: 190 }), buffers = []; for (let str of array) { let link = `https://translate.google.com/translate_tts?ie=UTF-8&total=1&idx=0&textlen=64&client=tw-ob&q=${encodeURIComponent(str)}&tl=es` const fetch = require('node-fetch'); let buffer = await (await fetch(link)).buffer() buffers.push(buffer) } if (message.member.voice.channel && message.member.voice.channel.permissionsFor(message.client.user).has('CONNECT') && message.member.voice.channel.permissionsFor(message.client.user).has('SPEAK')){ message.member.voice.channel.join().then(async (voice) => { await voice.play(bufferToStream(Buffer.concat(buffers))) }) return 'Api-Message success(play), {type: 1} : Documento reproducido'; }else{ return message.channel.send({ files: [ { attachment: Buffer.concat(buffers), name: 'tts.mp3' } ] }) } }else{ let link = `https://translate.google.com/translate_tts?ie=UTF-8&total=1&idx=0&textlen=64&client=tw-ob&q=${encodeURIComponent(str)}&tl=es`; if (message.member.voice.channel && message.member.voice.channel.permissionsFor(message.client.user).has('CONNECT') && message.member.voice.channel.permissionsFor(message.client.user).has('SPEAK')){ message.member.voice.channel.join().then(async (voice) => { await voice.play(link) }) return 'Api-Message success(play), {type: 2} : Documento reproducido'; }else{ let att = new Discord.MessageAttachment(link, 'tts.mp3'); return message.channel.send({ files: [att] }) } } } function bufferToStream(buffer) { const { Readable } = require('stream'); const stream = new Readable(); stream.push(buffer); stream.push(null); return stream; } module.exports = tts;