convertidor-tts.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import gtts from 'node-gtts';
  2. import {readFileSync, unlinkSync} from 'fs';
  3. import {join} from 'path';
  4. const defaultLang = 'es';
  5. const handler = async (m, {conn, args, usedPrefix, command}) => {
  6. let lang = args[0];
  7. let text = args.slice(1).join(' ');
  8. if ((args[0] || '').length !== 2) {
  9. lang = defaultLang;
  10. text = args.join(' ');
  11. }
  12. if (!text && m.quoted?.text) text = m.quoted.text;
  13. conn.sendPresenceUpdate('recording', m.chat)
  14. let res;
  15. try {
  16. res = await tts(text, lang);
  17. } catch (e) {
  18. m.reply(e + '');
  19. text = args.join(' ');
  20. if (!text) throw `*⚠️ 𝐄𝐬𝐜𝐫𝐢𝐛𝐞 𝐮𝐧 𝐭𝐞𝐱𝐭𝐨 𝐪𝐮𝐞 𝐪𝐮𝐢𝐞𝐫𝐚 𝐜𝐨𝐧𝐯𝐞𝐫𝐭𝐢𝐫 𝐚 𝐧𝐨𝐭𝐚 𝐝𝐞 𝐯𝐨𝐳, 𝐄𝐣𝐞𝐦𝐩𝐥𝐨:* ${usedPrefix + command} es Hola negros`;
  21. res = await tts(text, defaultLang);
  22. } finally {
  23. if (res) conn.sendFile(m.chat, res, 'tts.opus', null, m, null, fake, true);
  24. }};
  25. handler.help = ['tts <lang> <teks>'];
  26. handler.tags = ['convertidor']
  27. handler.command = /^g?tts$/i;
  28. handler.register = true
  29. export default handler;
  30. function tts(text, lang = 'es') {
  31. console.log(lang, text);
  32. return new Promise((resolve, reject) => {
  33. try {
  34. const tts = gtts(lang);
  35. const filePath = join(global.__dirname(import.meta.url), '../tmp', (1 * new Date) + '.wav');
  36. tts.save(filePath, text, () => {
  37. resolve(readFileSync(filePath));
  38. unlinkSync(filePath);
  39. });
  40. } catch (e) {
  41. reject(e);
  42. }})}