diff --git a/commands/fun/tts/dectalkvc.js b/commands/fun/tts/dectalkvc.js index 96c481e6..fb8a013b 100644 --- a/commands/fun/tts/dectalkvc.js +++ b/commands/fun/tts/dectalkvc.js @@ -1,6 +1,6 @@ const { Command } = require('discord-akairo'); -const axios = require('axios'); -const fs = require('fs'); +const util = require('util'); +const exec = util.promisify(require('child_process').exec); const rand = require('../../../rand.js'); class dectalkvcCommand extends Command { @@ -31,31 +31,47 @@ class dectalkvcCommand extends Command { args.decMessage = args.decMessage.replace('\n', ' '); args.decMessage = encodeURI(args.decMessage); - return axios.request({ - responseType: 'arraybuffer', - url: `http://127.0.0.1:8080/api/gen.wav?dectalk=${args.decMessage}`, - method: 'get', - headers: { - 'Content-Type': 'audio/wav', - }, - }).then(async (result) => { - const outputFilename = './dectalkvc.wav'; - fs.writeFile(outputFilename, result.data, async function(err) { - if (err) console.error(err); - const voiceChannel = message.member.voice.channel; - if (!voiceChannel) return message.say('Please enter a voice channel first.'); - try { - const connection = await voiceChannel.join(); - const dispatcher = connection.play('./dectalkvc.wav'); - dispatcher.once('finish', () => voiceChannel.leave()); - dispatcher.once('error', () => voiceChannel.leave()); - return null; - } catch (err) { - voiceChannel.leave(); - return message.reply(`Oh no, an error occurred: \`${err.message}\`. Try again later!`); - } - }); - }); + if (process.platform == 'win32') { + exec(`cd .\\dectalk && .\\say.exe -w dectalk.wav "${args.decMessage}"`) + .catch(err => { + return console.error(err); + }) + .then(async () => { + const voiceChannel = message.member.voice.channel; + if (!voiceChannel) return message.say('Please enter a voice channel first.'); + try { + const connection = await voiceChannel.join(); + const dispatcher = connection.play('./dectalkvc.wav'); + dispatcher.once('finish', () => voiceChannel.leave()); + dispatcher.once('error', () => voiceChannel.leave()); + return null; + } catch (err) { + voiceChannel.leave(); + return message.reply(`Oh no, an error occurred: \`${err.message}\`. Try again later!`); + } + }); + + } else if (process.platform == 'linux') { + exec(`wine dectalk/say.exe -w ../../dectalk.wav "${args.decMessage}"`) + .catch(err => { + return console.error(err); + }) + .then(async () => { + const voiceChannel = message.member.voice.channel; + if (!voiceChannel) return message.say('Please enter a voice channel first.'); + try { + const connection = await voiceChannel.join(); + const dispatcher = connection.play('./dectalkvc.wav'); + dispatcher.once('finish', () => voiceChannel.leave()); + dispatcher.once('error', () => voiceChannel.leave()); + return null; + } catch (err) { + voiceChannel.leave(); + return message.reply(`Oh no, an error occurred: \`${err.message}\`. Try again later!`); + } + }); + } + } }