javascript - 在我的计算机上运行 Node.js Discord 机器人时出现错误女巫 416 状态代码
问题描述
我写了一个 Discord 机器人,它在触发条件时播放音乐。然而,几分钟后歌曲停止,我收到以下错误:
Error: input stream: Status code: 416
at ClientRequest.<anonymous> (M:\ELTE\ZHbot\node_modules\miniget\dist\index.js:147:27)
at Object.onceWrapper (events.js:422:26)
at ClientRequest.emit (events.js:315:20)
at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:596:27)
at HTTPParser.parserOnHeadersComplete (_http_common.js:119:17)
at TLSSocket.socketOnData (_http_client.js:469:22)
at TLSSocket.emit (events.js:315:20)
at addChunk (_stream_readable.js:295:12)
at readableAddChunk (_stream_readable.js:271:9)
at TLSSocket.Readable.push (_stream_readable.js:212:10)
我对 Node.js/Discord.js 相当陌生,我试图搜索答案,但只发现“超文本传输协议 (HTTP) 416 Range Not Satisfiable error response code”。
我使用此处找到的代码作为模板: https ://gabrieltanner.org/blog/dicord-music-bot
代码:
const Discord = require('discord.js');
const ytdl = require('ytdl-core');
const client = new Discord.Client();
const queue = new Map();
const prefix = '-';
const responseObject = {
'<:gt:720365742733918300>':'https://www.youtube.com/watch?v=qii15cvZX70',
'<:no:719525207387275344>':'https://www.youtube.com/watch?v=o_LrHt4Hhhs',
'<:isten:719523319933567006>':'https://www.youtube.com/watch?v=psha3ecS5K8'
};
client.once("ready", () => {
console.log("Ready!");
});
client.once("reconnecting", () => {
console.log("Reconnecting!");
});
client.once("disconnect", () => {
console.log("Disconnect!");
});
var songInfo;
client.on("message", async message => {
if (message.author.bot) return;
const serverQueue = queue.get(message.guild.id);
if(responseObject[message.content]){
songInfo = await ytdl.getInfo(responseObject[message.content]);
execute(message, serverQueue);
}else if (message.content === 'return 0') {
stop(message, serverQueue);
return;
}
});
async function execute(message, serverQueue) {
const args = message.content.split(" ");
const voiceChannel = message.member.voice.channel;
if (!voiceChannel)
return message.channel.send(
"You need to be in a voice channel to play music!"
);
const permissions = voiceChannel.permissionsFor(message.client.user);
if (!permissions.has("CONNECT") || !permissions.has("SPEAK")) {
return message.channel.send(
"I need the permissions to join and speak in your voice channel!"
);
}
const song = {
title: songInfo.title,
url: songInfo.video_url
};
if (!serverQueue) {
const queueContruct = {
textChannel: message.channel,
voiceChannel: voiceChannel,
connection: null,
songs: [],
volume: 5,
playing: true
};
queue.set(message.guild.id, queueContruct);
queueContruct.songs.push(song);
try {
var connection = await voiceChannel.join();
queueContruct.connection = connection;
play(message.guild, queueContruct.songs[0]);
} catch (err) {
console.log(err);
queue.delete(message.guild.id);
return message.channel.send(err);
}
} else {
serverQueue.songs.push(song);
return "";
//return message.channel.send(`${song.title} has been added to the queue!`);
}
}
function skip(message, serverQueue) {
if (!message.member.voice.channel)
return message.channel.send(
"You have to be in a voice channel to stop the music!"
);
if (!serverQueue)
return message.channel.send("There is no song that I could skip!");
serverQueue.connection.dispatcher.end();
}
function stop(message, serverQueue) {
if (!message.member.voice.channel)
return message.channel.send(
"You have to be in a voice channel to stop the music!"
);
serverQueue.songs = [];
serverQueue.connection.dispatcher.end();
}
function play(guild, song) {
const serverQueue = queue.get(guild.id);
if (!song) {
serverQueue.voiceChannel.leave();
queue.delete(guild.id);
return;
}
const dispatcher = serverQueue.connection
.play(ytdl(song.url))
.on("finish", () => {
serverQueue.songs.shift();
play(guild, serverQueue.songs[0]);
})
.on("error", error => console.error(error));
dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);
//serverQueue.textChannel.send("#include \"library/buzibar.hpp\"");
serverQueue.textChannel.send("#include \"library/" + song.title + ".hpp\"" + "\n" + "std::cout << \"Az embernek csak az arca ismerhető, de az arca nem ő. << std::endl; \nstd::cout << Ő az arca mögött van. Láthatatlan.\" (Gárdonyi Géza) << std::endl;\nreturn 0;"
//,{tts: true}
)
}
client.login('client-token');
解决方案
如果您将其托管在与您的不和谐客户端侦听的同一台 PC 上,则 api 有时会感到困惑并导致流错误
希望修复它 - ItzWiresDev#6193
(如果不行就私信我)
推荐阅读
- java - Spring Boot中的多模块依赖管理问题
- java - 将spring boot maven项目作为依赖添加到另一个项目(本地)
- azure-devops - 从 Azure DevOps Server 迁移到 Azure DevOps Services - Backlogs 和 git repo
- python - .split() 在这个代码实例中发生了什么变化
- html - SVG 文本未显示在 html 文件中
- r - 如何根据 R 中 data.frame 中给出的数据获取列表中所有元素的索引?
- python - 如何使用每个元组的第一个值作为键将六个元组列表加入熊猫数据框?
- javascript - 制作一个表单以单击颜色并在 html 中发送值
- php - 来自数组的教义查询
- c++ - 打印类标识符(如果可用)