【问题标题】:Discord radio bot randomly disconnectingDiscord 无线电机器人随机断开连接
【发布时间】:2021-08-24 03:14:07
【问题描述】:

DJ (v12)

也许有人已经在他们的代码中熟悉这个问题并且知道解决方案。 听了几个小时后,机器人会随机停止通过 URL 播放来自网络的音乐并离开语音频道。

这是我隐藏问题的一些代码,感谢您提供任何答案或解决方案:-)

const commands = {
    "play-join": {
        process: function(message) {
            
            if (message.content.toLowerCase() == "?play-join") {
        if (message.channel.type == "dm") return;

        const role = message.guild.roles.cache.find((r) => r.name === 'DJ')

        if (!role) return message.reply(`**DJ** role is not created`)
        if (!message.member.roles.cache.has(role.id)) return message.reply(`You need to have ${role} role.`);

        var shuffle1 = Math.floor(Math.random() * connect_log.length);

        const voiceChannel = message.member.voice.channel
        if (voiceChannel) {

            if (!client.voice.connections.some(conn => conn.channel.id == voiceChannel.id)) {
                
            var EventEmitter = require('events');
            const emitter = new EventEmitter()
            emitter.setMaxListeners(0)

                message.member.voice.channel.join().then(connection => {
                        require('http').get("http://STREM_URL", (res) => {
                            connection.play(res);
                            message.channel.send(connect_log[shuffle1]);
                            connection.voice.setSelfDeaf(true);

                        });
                    });
                }
            } else {
                message.reply("Be in a Voice Channel!");
            }}
        }
    }
}

【问题讨论】:

  • 可能节点进程睡着了(???)
  • 嗯,从某种意义上说是的……但从另一种意义上说,它不应该那样做。如果我在一段时间后添加重新加载命令,它会破坏用户体验,因为有几秒钟的刷新/连接延迟
  • 你在哪里托管你的机器人?
  • 目前在 Heroku,一个客户端。

标签: javascript discord discord.js


【解决方案1】:

如果你在 Heroku 上托管你的机器人,你可以试试这个:

  • 将名为Procfile 的新文件添加到您的根目录
  • 打开文件并粘贴到这一行:worker: node index.js 并保存
  • 将其推送到您的 git 存储库
  • 打开您的 Heroku 项目
  • 导航到资源标签
  • 现在应该有一个名为 worker: node index.js 的新选项,编辑它以便激活它

VPS 上托管我的机器人之前,我也在 Heroku 上托管了它,并且按照这些步骤让我的机器人永远不会睡着。希望对你也有帮助:)

【讨论】:

  • 谢谢,但这不是问题所在。我已经按照你建议的方式运行它
  • 您是否在 heroku 上运行免费测功机
  • 是的,它是免费的。我有两个账户,一个关联了信用卡,另一个没有关联,我目前正在托管它
【解决方案2】:

一段时间后,我想通了。 如果有人像我一样遇到问题,请使用 stateChange 和 Idle 事件,然后在状态从播放变为空闲时重新连接。 感谢您的回答,这真的很有帮助!

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2021-02-19
  • 2017-11-20
  • 1970-01-01
  • 2020-12-08
  • 2020-11-08
  • 2021-04-21
  • 2017-11-21
  • 2020-12-27
  • 2022-01-23
相关资源
最近更新 更多