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
51 lines
2.1 KiB
JavaScript
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`);
|
|
});
|
|
}; |