From d56ac57dea3c25b94b803c395033ece06dbaaa26 Mon Sep 17 00:00:00 2001 From: loicbersier Date: Sat, 18 May 2019 00:49:20 +0200 Subject: [PATCH] dectalk but in voice chat --- commands/fun/dectalkvc.js | 57 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 commands/fun/dectalkvc.js diff --git a/commands/fun/dectalkvc.js b/commands/fun/dectalkvc.js new file mode 100644 index 0000000..8835d6c --- /dev/null +++ b/commands/fun/dectalkvc.js @@ -0,0 +1,57 @@ +const { Command } = require('discord-akairo'); +const axios = require('axios'); +const fs = require('fs'); + +class dectalkvcCommand extends Command { + constructor() { + super('dectalkvc', { + aliases: ['dectalkvc', 'decvc'], + category: 'fun', + args: [ + { + id: 'decMessage', + type: 'string', + match: 'rest' + } + ], + description: { + content: 'Generate your text into dectalk and says it in voice chat', + usage: '', + examples: [''] + } + }); + } + + async exec(message, args) { + args.decMessage = args.decMessage.replace('\n', ' '); + args.decMessage = encodeURI(args.decMessage); + + return axios.request({ + responseType: 'arraybuffer', + url: `https://talk.moustacheminer.com/api/gen.wav?dectalk=${args.decMessage}`, + method: 'get', + headers: { + 'Content-Type': 'audio/wav', + }, + }).then(async (result) => { + const outputFilename = './dectalkvc.wav'; + fs.writeFileSync(outputFilename, result.data); + + 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!`); + } + }); + + } +} + +module.exports = dectalkvcCommand; \ No newline at end of file