【问题标题】:receive audio form a user with discord bot使用不和谐机器人从用户那里接收音频
【发布时间】:2021-03-09 13:49:43
【问题描述】:

我正在从事一个不和谐的项目,在该项目中我需要录制用户声音,我正在关注this 文档。

到目前为止,这是我写的:

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' && 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 文件总是空的!

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案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' && 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');
    

    【讨论】:

    • 你暴露了你的机器人令牌,我建议你立即重置它。
    • @K.KDesgins 感谢您的通知,令牌实际上是无效的,但我还是编辑了答案。
    猜你喜欢
    • 2021-05-23
    • 2020-12-05
    • 2019-04-04
    • 1970-01-01
    • 2021-09-30
    • 2020-08-25
    • 2020-10-08
    • 2020-06-20
    • 1970-01-01
    相关资源
    最近更新 更多