Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不和谐音乐机器人未经处理的承诺拒绝_Javascript_Node.js_Discord_Discord.js - Fatal编程技术网

Javascript 不和谐音乐机器人未经处理的承诺拒绝

Javascript 不和谐音乐机器人未经处理的承诺拒绝,javascript,node.js,discord,discord.js,Javascript,Node.js,Discord,Discord.js,前几天晚上,Discord music机器人正在工作,但每次我尝试播放一首歌时,似乎都会出现这个错误。所有其他功能都可以正常工作 有什么建议吗 (节点:14116)未处理的PromisejectionWarning:错误:未找到视频id:播放 在Object.exports.getURLVideoID(C:_PATH\uuu\musicbot\node\umodules\ytdl core\lib\util.js:261:11) 在Object.exports.getVideoID(C:_PAT

前几天晚上,Discord music机器人正在工作,但每次我尝试播放一首歌时,似乎都会出现这个错误。所有其他功能都可以正常工作

有什么建议吗

(节点:14116)未处理的PromisejectionWarning:错误:未找到视频id:播放 在Object.exports.getURLVideoID(C:_PATH\uuu\musicbot\node\umodules\ytdl core\lib\util.js:261:11) 在Object.exports.getVideoID(C:_PATH\uux0\musicbot\node\u modules\ytdl core\lib\util.js:285:20) 在Function.exports。[作为getInfo](C:_PATH\uu\musicbot\node\u modules\ytdl core\lib\info.js:317:19) 在执行时(C:_PATH\uu\musicbot\index.js:227:31) 在客户端。(C:_PATH\uu\musicbot\index.js:199:5) 在Client.emit(events.js:315:20) 在MessageCreateAction.handle(C:\Users\karam\node\u modules\discord.js\src\client\actions\MessageCreate.js:31:14) 在Object.module.exports[作为消息\u CREATE](C:\Users\karam\node\u modules\discord.js\src\client\websocket\handlers\MESSAGE\u CREATE.js:4:32) 在WebSocketManager.handlePacket(C:\Users\karam\node\u modules\discord.js\src\client\websocket\WebSocketManager.js:386:31) 在WebSocketShard.onPacket(C:\Users\karam\node\u modules\discord.js\src\client\websocket\WebSocketShard.js:436:22) (节点:14116)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用CLI标志
--unhandled rejections=strict
(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (拒绝id:1) (节点:14116)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程

const Discord = require("discord.js");
const { prefix, token } = require("./config.json");
const ytdl = require("ytdl-core");

const client = new Discord.Client();

const queue = new Map();

client.once("ready", () => {
  console.log("Ready!");
});

client.once("reconnecting", () => {
  console.log("Reconnecting!");
});

client.once("disconnect", () => {
  console.log("Disconnect!");
});

client.on("guildMemberAdd", member => {
  member.send(
    `Welcome to the server!`
  )
})

client.on("message", async message => {
  if (message.author.bot) return;
  if (!message.content.startsWith(prefix)) return;

  const serverQueue = queue.get(message.guild.id);

  if (message.content.startsWith(`${prefix}play`)) {
    execute(message, serverQueue);
    return;
  } else if (message.content.startsWith(`${prefix}skip`)) {
    skip(message, serverQueue);
    return;
  } else if (message.content.startsWith(`${prefix}stop`)) {
    stop(message, serverQueue);
    return;
  } else {
    message.channel.send("You need to enter a valid command!");
  }
});

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 songInfo = await ytdl.getInfo(args[1]);
  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 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(`Start playing: **${song.title}**`);
}

client.login(token);

您在发出事件时使用
async
,以使用Discord创建消息,但未指定任何
wait

有关如何使用
async/await
的更多信息,请阅读文档