繁体   English   中英

加入准备好的语音频道(discord.js)

[英]Joining a voice channel on ready (discord.js)

我试过这个:

client.on('ready', () => {
  let channel = client.channels.get('432462518380789771');
  channel.join()
});

它不起作用。 我确保 ID 是正确的,一切正常,但仍然无法正常工作。

考虑到我们没有关于您收到的错误的上下文,我将提供一个代码示例,看看这是否能解决您的问题。

client.on("ready", () => {
  const channel = client.channels.get("mychannelid");
  if (!channel) return console.error("The channel does not exist!");
  channel.join().then(connection => {
    // Yay, it worked!
    console.log("Successfully connected.");
  }).catch(e => {
    // Oh no, it errored! Let's log it to console :)
    console.error(e);
  });
});

在此代码中,我们使用 ready 事件,然后像您一样获取频道。 此外,我们还检查频道是否未定义或为空,这意味着机器人无法找到频道或没有对其进行缓存。 然后,我们加入并查看是否有返回连接。 如果我们这样做,将我们成功连接的事实记录到控制台。 如果它没有成功连接,我们将捕获它并将其错误地发送到控制台。

在调试时包含日志记录以查看代码运行的程度以及查看可能发生问题的位置总是一个好主意。 在 Node.js 中,捕获 unhandledRejections 也是一个好主意。 否则,它们会使您的进程崩溃。 您可以通过下面的代码示例来做到这一点。

process.on("unhandledRejection", console.error);

祝你好运,快乐编码!

编辑:有了新信息,我现在很容易看到这个问题。 注意它在错误中是如何说的:

Error: FFMPEG not found

您可以看到您当前没有安装 FFMPEG。 要安装 FFMPEG,请转到此 url以下载适用于您平台的源代码。 查看此答案以了解如何在 Windows 上安装它。

这将是更新 v12 的工作代码的更新版本。 截至 02/05/2020。

 client.on("ready", () => { const channel = client.channels.cache.get("ChannelIDhere"); if (!channel) return console.error("The channel does not exist!"); channel.join().then(connection => { // Yay, it worked! console.log("Successfully connected."); }).catch(e => { // Oh no, it errored! Let's log it to console :) console.error(e); }); });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM