const { IntentsBitField, Partials, Client } = require('discord.js');
const { createReadStream, createWriteStream } = require('fs');
const { pipeline } = require('stream');
const { joinVoiceChannel, createAudioResource } = require('@discordjs/voice');
const config = require('./config.json');
config.cfg = {
...config.cfg,
intents: new IntentsBitField(config.cfg.intents),
partials: [Partials.Channel]
};
const client = new Client(config.cfg);
client.on('ready', () => {
console.log('Бот запущен!');
});
client.on('messageCreate', async (message) => {
if (message.content === '/record') {
// Проверяем, что пользователь находится в голосовом канале
if (!message.member.voice.channel) {
return message.reply('Вы должны находиться в голосовом канале, чтобы использовать эту команду');
}
// Подключаемся к голосовому каналу пользователя
const connection = joinVoiceChannel({
channelId: message.member.voice.channel.id,
guildId: message.guild.id,
adapterCreator: message.guild.voiceAdapterCreator,
});
// Создаем поток записи аудио
const audioStream = connection.receiver.createStream(message.member, {
mode: 'pcm',
end: 'manual',
});
// Создаем поток чтения аудио и записываем его в файл
const audioFile = createWriteStream('audio.pcm');
pipeline(audioStream, audioFile, (err) => {
if (err) {
console.error('Ошибка записи аудио:', err);
} else {
console.log('Аудиофайл успешно записан');
}
// Завершаем соединение
connection.destroy();
});
// Отправляем сообщение об успешном начале записи аудио
message.reply('Начинаю запись аудио...');
}
});
client.login(config.token);
Хотел сделать дискорд бота, который будет сидеть в голосовом чате, слушать и отвечать, но столкнулся с множеством проблем... Никак не могу создать поток чтения и записи.