#node.js #discord #discord.js #bots #audio-player
Вопрос:
У меня проблема с моим музыкальным ботом. Переписанный файл присоединяется и запускает строку «Воспроизведение песни», но не воспроизводит звук. Грязный работает просто отлично. Что может быть в этом случае-все в основном одно и то же, за исключением этих функций
Беспорядочный код
const videoPlayer = async function (message, song, skip, stop) {
const guild = message.guild;
const songQueue = queue.get(guild.id);
if(!song amp;amp; !skip amp;amp; !stop) {
songQueue.connection.disconnect();
queue.delete(guild.id);
return;
}
if (skip) {
if (!songQueue) return message.channel.send("There are currently no songs in the queue");
const prev = songQueue.songs[0].title
await songQueue.textChannel.send(`Skipping `${prev}`!`)
songQueue.songs.shift();
if (!song amp;amp; songQueue.songs.length == 0) {
songQueue.connection.disconnect();
queue.delete(guild.id);
return songQueue.textChannel.send("There are currently no songs in the queue");
}
var music = songQueue.songs[0]
var stream = ytdl(music.url, {filter: 'audioonly', highWaterMark: 1<<25})
} else {
var stream = ytdl(song.url, {filter: 'audioonly', highWaterMark: 1<<25})
}
const player = Voice.createAudioPlayer();
const resource = Voice.createAudioResource(stream);
await player.play(resource);
songQueue.connection.subscribe(player);
if (!song amp;amp; music) {
song = music
}
player.on(Voice.AudioPlayerStatus.Playing, async () => {
await songQueue.textChannel.send(`Playing `${song.title}`!`)
});
player.on(Voice.AudioPlayerStatus.Idle, () => {
songQueue.songs.shift();
videoPlayer(message, songQueue.songs[0])
});
}
Переписанный Код
const videoPlayer = async (message, song) => {
const guild = message.guild;
const songQueue = queue.get(guild.id);
if(!song) {
songQueue.connection.disconnect();
queue.delete(guild.id);
return message.channel.send("There are no more songs in queue.");
}
const stream = ytdl(song.url, {filter: 'audioonly', highWaterMark: 1<<25});
const player = Voice.createAudioPlayer();
const resource = Voice.createAudioResource(stream);
await player.play(resource);
songQueue.connection.subscribe(player);
player.on(Voice.AudioPlayerStatus.Playing, async () => {
await songQueue.textChannel.send(`Playing `${song.title}``)
});
player.on(Voice.AudioPlayerStatus.Idle, async () => {
songQueue.songs.shift();
videoPlayer(message, songQueue.songs[0]);
})
}
const skipSong = async (message) => {
guild = message.guild;
songQueue = queue.get(guild.id);
if(!songQueue) return message.channel.send("There are currently no songs in queue.");
let song = songQueue.songs[0];
await message.channel.send(`Skipping `${song.title}`!`);
songQueue.songs.shift();
song = songQueue.songs[0];
if(!song) return message.channel.send("There are no more songs in queue.");
videoPlayer(message, song);
}
const stop = async (message) => {
songQueue = queue.get(message.guild.id);
await songQueue.textChannel.send('Stopping in just a moment...');
songQueue.connection.disconnect();
queue.delete(guild.id);
return;
}
Я не понимаю, в чем проблема-пожалуйста, помогите!
Редактировать:
Так что, оказывается, нет никаких проблем с кодом, кроме их каталога. По какой-то причине он просто работает на оригинальном-я до сих пор не знаю, в чем именно проблема, но сейчас он работает» ^^
Комментарии:
1. это выдает ошибку или что-то в этом роде?
2. Никакой ошибки-вот почему я совсем растерялся
3. Я новичок в javascript, так что это может быть проблемой—
4. Одна вещь, которую я заметил, это то, что мой бот долгое время остается в ВК, не воспроизводя аудио, но все еще там.
5. Совет при рефакторинге делайте это шаг за шагом. Проверьте работоспособность шага, прежде чем двигаться дальше. В конечном итоге вы столкнетесь с ошибками, которые вызывают вашу текущую проблему.