discord-voice-recorder/bin/commands.js
Alex 509cadea67 update to d.js master and fix #17 (stage channels)
deleted the package-lock because i thought it would fix an npm issue which it didn't, shouldn't change anything though.  also added intents which are required in the new version of d.js
2021-05-03 01:59:02 -07:00

51 lines
2.1 KiB
JavaScript

const fs = require('fs');
const createNewChunk = () => {
const pathToFile = __dirname + `/../recordings/${Date.now()}.pcm`;
return fs.createWriteStream(pathToFile);
};
exports.enter = function(msg, channelName) {
channelName = channelName.toLowerCase();
msg.guild.channels.cache.forEach(c => {
console.log(c);
})
const voiceChannel = msg.guild.channels.cache.find(channel => channel.name.toLowerCase() === channelName);
if (!voiceChannel || (voiceChannel.type !== 'voice' && voiceChannel.type !== 'stage'))
return msg.reply(`The channel #${channelName} doesn't exist or isn't a voice channel.`);
console.log(`Sliding into ${voiceChannel.name} ...`);
voiceChannel.join()
.then(conn => {
const dispatcher = conn.play(__dirname + '/../sounds/drop.mp3');
dispatcher.on('finish', () => { console.log(`Joined ${voiceChannel.name}!\n\nREADY TO RECORD\n`); });
const receiver = conn.receiver;
conn.on('speaking', (user, speaking) => {
if (speaking) {
console.log(`${user.username} started speaking`);
const audioStream = receiver.createStream(user, { mode: 'pcm' });
audioStream.pipe(createNewChunk());
audioStream.on('end', () => { console.log(`${user.username} stopped speaking`); });
}
});
})
.catch(err => { throw err; });
}
exports.exit = function (msg) {
//check to see if the voice cache has any connections and if there is
//no ongoing connection (there shouldn't be undef issues with this).
if(msg.guild.voiceStates.cache.filter(a => a.connection !== null).size !== 1)
return;
//make sure it's .last() not .first(). some discord js magic going on rn
const { channel: voiceChannel, connection: conn } = msg.guild.voiceStates.cache.last();
const dispatcher = conn.play(__dirname + "/../sounds/badumtss.mp3", { volume: 0.45 });
dispatcher.on("finish", () => {
voiceChannel.leave();
console.log(`\nSTOPPED RECORDING\n`);
});
};