получение аудио от пользователя с помощью discord bot

#javascript #node.js #discord #discord.js

#javascript #node.js #Discord #discord.js

Вопрос:

Я работаю над проектом discord, и в этом проекте мне нужно записать голос пользователя, я следую этому документу.

пока это то, что я написал:

 const fs = require('fs');
const Discord = require('discord.js');
const client = new Discord.Client();

client.once('ready', () => {
    console.log('Ready!');
});

client.on('message', async message => {
    if (message.content === 'a' amp;amp; message.member.voice.channel) {
        const connection = await message.member.voice.channel.join();
        const audio = connection.receiver.createStream('user_id?', { mode: 'pcm' });
        audio.pipe(fs.createWriteStream('user_audio'));
    }
});

client.login('token');
 

но проблема в том, что файл user_audio всегда пуст!

Ответ №1:

Это ошибка в discord.js , чтобы решить эту проблему, нам нужно воспроизвести аудио…

 const fs = require('fs');
const Discord = require('discord.js');
const client = new Discord.Client();
const { Readable } = require('stream');

const SILENCE_FRAME = Buffer.from([0xF8, 0xFF, 0xFE]);

class Silence extends Readable {
  _read() {
    this.push(SILENCE_FRAME);
    this.destroy();
  }
}

client.once('ready', () => {
    console.log('Ready!');
});

client.on('message', async message => {
    if (message.content === 's' amp;amp; message.member.voice.channel) {
        const connection = await message.member.voice.channel.join();
        const audio = connection.receiver.createStream(message, { mode: 'pcm', end: 'manual' });
        audio.pipe(fs.createWriteStream('user_audio'));

        connection.play(new Silence(), { type: 'opus' });
        console.log(message.member.user.id);
    }
});

client.login('token');
 

Комментарии:

1. Вы раскрыли свой токен бота, я рекомендую вам немедленно сбросить его.

2. @K.KDesgins Спасибо за информирование, токен фактически недействителен, но я все равно отредактировал ответ.