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

Posted

技术标签:

【中文标题】准备好加入语音频道(discord.js)【英文标题】:Joining a voice channel on ready (discord.js) 【发布时间】:2018-09-25 10:20:12 【问题描述】:

我试过了:

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

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

【问题讨论】:

你得到什么错误? 我不确定如何查看错误...我正在使用 heroku 来托管我的不和谐机器人。 好吧,但是在开发过程中,为什么要将机器人托管在远程机器上? 嗯...我尝试下载代码并在本地运行它,但它都搞砸了,并给出了很多错误 那些错误是? 【参考方案1】:

这将是更新 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);
    );
);

【讨论】:

【参考方案2】:

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

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,请转到 this url 下载适用于您平台的源代码。查看this answer 了解如何在 Windows 上安装它。

【讨论】:

我不确定如何在 heroku 上查看控制台。是否可以在文本通道中打印错误,例如:message.channel.send(e);还是什么? 我不熟悉heroku。如果您使用node myapp 运行它,那么它应该只记录到您运行该命令的位置。否则,谷歌搜索“如何查看 heroku 上的日志”可能会有所帮助。 如何安装它以使用我在 github 上的代码。 heroku 应用从 github 拉取代码。 你必须在每台克隆你的 GitHub 的设备上安装它 哦,选项中有一个名为 buildpacks 的部分,我在那里添加了它并安装了它,我可以在日志中看到它的工作原理!机器人已连接到频道!谢谢!

以上是关于准备好加入语音频道(discord.js)的主要内容,如果未能解决你的问题,请参考以下文章

加入机器人 discord.js 的语音频道后如何忽略相同的命令

Discord.js 在文本频道中加入/离开语音频道通知

Discord.js 机器人无法离开语音频道

Discord.js 将成员移动到不同的语音频道

(Discord.js) 如何让所有成员连接到某个类别的语音频道?

从 twitch bot 调用 Discord.js 音乐问题找到语音频道