【问题标题】:[TOKEN_INVALID]: An invalid token was provided[TOKEN_INVALID]:提供的令牌无效
【发布时间】:2023-04-05 23:52:01
【问题描述】:

我正在尝试在 Heroku 上托管一个不和谐机器人。

当它启动时我得到这个错误:

"UnhandledPromiseRejectionWarning: Error [TOKEN_INVALID]: An invalid token was provided".

但这是奇怪的部分。当我第一次在 Visual Studio Code 中测试它时,它运行良好。所以在我将文件放入 Heroku 的过程中,它变得无效。

有人知道我该如何解决这个问题吗?

感谢您提前回复。

【问题讨论】:

  • 如果没有看到您是如何处理令牌的,我们甚至都很难猜到。您能否发布一个代码示例,展示您如何获取令牌并使用它登录。 (注意:不要给我们token,只给它周围的代码,如果是直接在代码中的字符串,用一些任意文本替换)。
  • 感谢您的回复。这是我使用机器人登录的方式。它说 TOKEN 就是我拥有的地方。我也尝试过将 TOKEN 变成一个 const 机器人,同样的情况发生了。 bot.login('TOKEN', () => { console.log;
  • 您似乎在尝试使用回调,Client.login 不支持回调。虽然在 Javascript 中我希望一个未使用的参数被简单地忽略,但您应该尝试将其删除或将其转换为 .then 以处理该方法确实返回的 Promise。
  • 我不确定你想让我做什么。我对编码很陌生
  • 因为 Stack Overflow 不是课堂,这里的工具不足以教你 Javascript/Node,如果你不知道什么是 promise 或 callback,那是你需要的核心功能来这里之前先学习一下。

标签: heroku discord discord.js


【解决方案1】:

我遇到了类似的问题,我对令牌进行了加密,以便我可以将加密的令牌存储在 heroku 上并在 js 中解密以将实际令牌传递给登录方法。 奇怪的是,如果我直接将令牌作为字符串写入 js 文件,或者我使用 heroku 并将其直接存储在那里,那么它就可以工作。但是,如果我将加密的令牌存储在 heroku 中并对其进行解密(是的,它已正确解密)并将解密的令牌提供给登录方法,那么它就不起作用。 我不知道 Heroku 是不是做了一些奇怪的东西,或者 discord.js 不支持我不知道的东西......

所以,绝对有效的是: 您将令牌(客户端密码)插入 herokus 配置变量(来自您的测功机的设置),然后使用 process.env.BOT_TOKEN 并将其传递给您的 Discord.Client().login()。 我假设你的情况是bot.login(process.env.BOT_TOKEN)。

所以对我来说,看起来我存储在 heruko 中的值和我发送给 discord 的值必须相同......

【讨论】:

    【解决方案2】:

    您应该输入一个有效 Discord 机器人令牌。您可以通过转到Discord Developer Portal,然后“应用程序”,选择您的机器人,然后转到“机器人”并单击令牌下的“复制”来获取它(它说点击这里显示)。

    【讨论】:

      【解决方案3】:

      在heroku上部署应用程序你必须将client.login(token)更改为client.login(process.env.token)并将token添加到 作为从不和谐开发者门户复制的令牌 - 键和值 - 令牌,请记住 (important note!) 字母必须相同,我的意思是,如果您在 process.env.TOKEN 中使用大写字母,则配置变量有现在成为 TOKEN。

      【讨论】:

        【解决方案4】:

        我也遇到过这种情况。

        我发现当使用 dotenv 从 .env 文件(在我的计算机上运行)读取数据时,名称不区分大小写。 (可能是错的)

        例如,TOKEN 将能够被视为token,这意味着当process.env.token 可以在.env 中以TOKEN 的值返回时 文件

        但是当我在 Heroku 上运行时,我刚才所说的就没有了(process.env.token 不会返回 TOKEN 的值,而是 token)。尝试仔细检查名称是否匹配并更正它。

        【讨论】:

        • Windows 上的环境变量不区分大小写。几乎在其他任何地方,他们都是。
        【解决方案5】:

        正如您所说,您使用 bot.login('TOKEN', () => { console.log; } 登录了您的机器人

        但 bot.login 不支持回调函数。

        我的意思是,你把之前的代码改成bot.login('TOKEN')。

        【讨论】:

          猜你喜欢
          • 2021-06-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-02
          • 1970-01-01
          • 2017-04-17
          • 2012-01-25
          相关资源
          最近更新 更多