准备加入语音频道 (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);
  });
});

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

在调试时包含日志记录以查看您的代码运行了多远以及可能出现问题的位置始终是个好主意。在 Node.js 中,捕获 unhandledRejections 也是一个好主意。否则,它们会使您的流程崩溃。您可以通过下面的代码示例执行此操作。

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

祝你好运,编码愉快!

编辑:有了新信息,我现在很容易看出问题所在。请注意错误中的内容:

Error: FFMPEG not found

您可以看到您目前没有安装FFMPEG。要安装 FFMPEG,请转到 this url to download the sources for your platform. Check out this answer 查看如何在 Windows 上安装它。

这将是更新 v12 的工作代码的更新版本。 截至 2020 年 2 月 5 日。

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);
    });
});