mirror of
https://github.com/arthur-pbty/xiao.git
synced 2026-06-26 22:32:52 +02:00
This won't work
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
const { Command } = require('discord.js-commando');
|
const { Command } = require('discord.js-commando');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const { wait } = require('../../util/Util');
|
const fs = require('fs');
|
||||||
|
const { Writable } = require('stream');
|
||||||
|
|
||||||
module.exports = class AnimalCrossingSpeakCommand extends Command {
|
module.exports = class AnimalCrossingSpeakCommand extends Command {
|
||||||
constructor(client) {
|
constructor(client) {
|
||||||
@@ -36,12 +37,10 @@ module.exports = class AnimalCrossingSpeakCommand extends Command {
|
|||||||
if (this.client.voiceConnections.has(channel.guild.id)) return msg.say('I am already playing a sound.');
|
if (this.client.voiceConnections.has(channel.guild.id)) return msg.say('I am already playing a sound.');
|
||||||
try {
|
try {
|
||||||
const connection = await channel.join();
|
const connection = await channel.join();
|
||||||
for (const letter of text.split('')) {
|
const stream = await this.joinLetters(text.split(''));
|
||||||
if (letter === ' ') await wait(500);
|
const dispatcher = connection.playStream(stream);
|
||||||
else if (!/[a-z0-9]/.test(letter)) await this.playLetter(connection, 'unknown');
|
dispatcher.once('end', () => channel.leave());
|
||||||
else await this.playLetter(connection, letter);
|
dispatcher.once('error', () => channel.leave());
|
||||||
}
|
|
||||||
channel.leave();
|
|
||||||
return null;
|
return null;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
channel.leave();
|
channel.leave();
|
||||||
@@ -49,12 +48,23 @@ module.exports = class AnimalCrossingSpeakCommand extends Command {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
playLetter(connection, letter) {
|
async joinLetters(letters) {
|
||||||
const letterPath = path.join(__dirname, '..', '..', 'assets', 'sounds', 'animal-crossing-speak', `${letter}.wav`);
|
let stream = new Writable();
|
||||||
|
for (const letter of letters) {
|
||||||
|
if (letter === ' ') continue;
|
||||||
|
else if (!/[a-z0-9]/.test(letter)) stream = await this.addLetter(stream, 'unknown');
|
||||||
|
else stream = await this.addLetter(stream, letter);
|
||||||
|
}
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
|
||||||
|
addLetter(resultStream, letter) {
|
||||||
|
const filePath = path.join(__dirname, '..', '..', 'assets', 'sounds', 'animal-crossing-speak', `${letter}.wav`);
|
||||||
return new Promise((res, rej) => {
|
return new Promise((res, rej) => {
|
||||||
const dispatcher = connection.playFile(letterPath);
|
const stream = fs.createReadStream(filePath);
|
||||||
dispatcher.once('end', reason => res(reason));
|
stream.pipe(resultStream, { end: false });
|
||||||
dispatcher.once('error', err => rej(err));
|
stream.once('end', () => res(resultStream));
|
||||||
|
stream.once('error', err => rej(err));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user