gpt4 book ai didi

javascript - 我正在将 ytdl-core 用于音乐机器人,它一直输出播放未定义

转载 作者:行者123 更新时间:2023-11-29 23:01:36 27 4
gpt4 key购买 nike

我正在使用 ytdl-core 和 node-opus 向我的机器人添加音乐功能。我也在关注教程。在我开始添加排队功能之前,该机器人运行良好。当我整合排队时,机器人仍然可以加入和离开语音 channel ,但不能播放音乐。它输出 (node:22116) UnhandledPromiseRejectionWarning: ReferenceError: play is not defined

根据对视频的评论,我尝试将 play 切换为 playstream。这最初有效,但没有帮助,只是输出它未定义。

命令如下:

      if (!message.member.voiceChannel) return message.channel.send("You must be connected to a voice channel.");
if (!args[0]) return message.channel.send("You must supply a __valid__ URL.");
let validate = await ytdl.validateURL(args[0]);
if (!validate) return message.channel.send("You must supply a __valid__ URL.");
let info = await ytdl.getInfo(args[0]);
let data = active.get(message.guild.id) || {};
if (!data.connection) data.connection = await message.member.voiceChannel.join();
if (!data.queue) data.queue = [];
data.guildID = message.guild.id;
data.queue.push ({
songTitle: info.title,
requester: message.author.tag,
url: args[0],
announceChannel: message.channel.id
});
if (!data.dispatcher) play();
else {
message.channel.send(`Added song to queue: ${info.title} || Requested by: ${message.author.id}`);
active.set(message.guild.id, data);

我希望仍然能够按照教程完全集成排队。

最佳答案

你在之前的代码中没有定义play()函数,所以你也不能使用它。

这是一个示例,说明您的 play() 函数可能看起来如何:

const queue = msg.client.queue;
const ytdl = require('ytdl-core');

async function play(guild, song) {
const serverQueue = await queue.get(guild.id);

if (!song) {
await serverQueue.voiceChannel.leave();
await queue.delete(guild.id);
return;
}

const stream = await ytdl(song.url, {
filter: 'audioonly'
});
const dispatcher = await serverQueue.connection.playStream(stream)
.on('end', async reason => {
if (reason === 'Stream is not generating quickly enough.');
serverQueue.songs.shift('Stream is not generating quickly enough');
await play(guild, serverQueue.songs[0]);
})
.on('error', error => console.error(error));
dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);
}

我的队列构造如下:

const queueConstruct = {
textChannel: msg.channel,
voiceChannel: voiceChannel,
connection: null,
songs: [],
volume: 2,
playing: true
};

可能是您必须更改某些代码行,以便它适用于您的机器人!

关于javascript - 我正在将 ytdl-core 用于音乐机器人,它一直输出播放未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55507925/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com