Как воспроизвести звук с музыкальным диссонансом бота на героку - PullRequest
0 голосов
/ 03 февраля 2019

Я создаю Discord Music Bot в discord.js, я уже установил ffmpeg, и все, кажется, работает нормально, но когда я выполняю команду воспроизведения, бот присоединяется к каналу, отправляет сообщение, но ничего не воспроизводитЯ уже проверил консоль, и она ничего не регистрирует.Я знаю, что это не проблема с кодом, поскольку он прекрасно работает локально, проблема в том, что когда я пытаюсь использовать heroku, я думал, что это может быть проблема с opusscript, но я не знаю.

Ответы [ 3 ]

0 голосов
/ 04 февраля 2019

Я не нахожу здесь никакого кода, поскольку он отлично работает на моем локальном хосте, но когда я начинаю размещать его в Heroku, ничего не происходит.Вот оно, возможно, есть ошибка, но, как я уже сказал, проблема в opusscript или node-opus. Вот мои сборки Heroku

А это мой код:

const ytdl = require('ytdl-core');

let voiceChn = message.member.voiceChannel;

if(!voiceChn) return message.channel.send('¡Join a voice channel first!.'); 

if(!args) return message.channel.send('Add a youtube URL to play it.');

voiceChn.join()
    .then(connection => {
        const url = ytdl(args.join(' '), { filter : 'audioonly' });

        const dispatcher = connection.playStream(url);

        message.delete();

        message.channel.send('Now playing : '+ args);

    }).catch(console.error);
0 голосов
/ 20 февраля 2019

Для чего стоит я вижу очень похожую проблему.Мой бот должен присоединиться к каналу, воспроизвести аудиоклип из сегмента S3 (который становится общедоступным), а затем уйти.Вот мой код:

async function executePlaySoundCommand(message, filePath) {
  try {
    const voiceChannel = message.member.voiceChannel;
    const connection = await voiceChannel.join();
    console.log(`filePath: ${filePath}`);
    const file = `${process.env.S3_URL}/${filePath}`;
    console.log(`file: ${file}`);
    const dispatcher = await connection.playArbitraryInput(file);
    console.log('Playback finished');
    dispatcher.on('end', () => {
      voiceChannel.leave();
    });
  } catch (err) {
    console.log(err);
  }
}

Локально бот присоединится к каналу, воспроизведет звук и уйдет, как и ожидалось.Однако в героку бот присоединится к каналу, после чего сразу же уйдет.Ниже приведены очищенные журналы от heroku:

Executing <command-name> command
filePath: <audio-file>.mp3
file: https://s3-eu-west-1.amazonaws.com/<s3-bucket-name>/<audio-file>.mp3
Playback finished

Я не думаю, что с моим кодом (?) Что-то не так, просматривая протоколы ffmpeg , чтобы увидеть, пропустил ли я что-то.

0 голосов
/ 04 февраля 2019

Хорошо, привет, было бы лучше, если бы вы опубликовали пример своего кода и подробный журнал ошибок.Из того, что я могу понять,

Я могу вам сказать, что вы можете воспроизводить mp3-файлы, которые нелегко скачиваются с YouTube без каких-либо зависимостей (кроме FFMPEG).Возможно, вы захотите проверить документацию, перейдя к https://discord.js.org:)

Вот полная ссылка на эту тему в документации Discord.js: https://discord.js.org/#/docs/main/stable/topics/voice

I'mповторюсь, я не могу понять вашу ситуацию слишком много.Укажите исключительное поведение и несколько примеров кода.

С другой стороны, ваш код может не работать, если вы используете основную ветку и используете код для стабильного выпуска.Пожалуйста, проверьте свою ветку и внесите необходимые изменения для обновления с нарушением кода.

...