我正在尝试在Heroku上托管一个不和谐的机器人。
启动时出现此错误:
"UnhandledPromiseRejectionWarning: Error [TOKEN_INVALID]: An invalid token was provided".
但这是奇怪的部分。当我第一次在Visual Studio Code中对其进行测试时,它运行良好。因此,在我将文件放入Heroku的过程中,它无效。
有人知道我该如何解决吗?
要提前答复,谢谢。
答案 0 :(得分:0)
我遇到了类似的问题,我对令牌进行了加密,以便可以将加密的令牌存储在heroku上,并在js中对其进行解密,以将实际令牌传递给登录方法。 奇怪的是,如果我将令牌直接以字符串形式写入js文件中,或者使用heroku并将其直接存储在其中,那么它将起作用。但是,如果我将加密的令牌存储在heroku中并对其进行解密(是的,它已正确解密)并将解密的令牌提供给登录方法,那么它将无法正常工作。 如果heroku做出一些奇怪的东西或discord.js不支持我不知道的东西,我不知道...
因此,绝对有效的是:
您在herokus config vars(来自dyno的设置)上插入令牌(客户机密),然后使用process.env.BOT_TOKEN
并将其传递给Discord.Client().login()
。
在您的情况下,我假设其为bot.login(process.env.BOT_TOKEN)
。
所以对我来说,我存储在heruko中的值和发送给不和谐的值必须相同...
答案 1 :(得分:0)
您应该输入一个有效 Discord 机器人令牌。您可以通过转到 Discord Developer Portal,然后“应用程序”,选择您的机器人,然后转到“机器人”并单击令牌下的“复制”来获取它(它说单击此处显示)。
答案 2 :(得分:0)
在 heroku 上部署应用程序,您必须将 client.login(token)
更改为 client.login(process.env.token)
并将 token
添加到
作为从不和谐开发者门户复制的令牌 - 键和值 - 令牌,请记住 (important note!)
字母必须相同,我的意思是,如果您在 process.env.TOKEN 中使用大写,则配置var 现在必须是 TOKEN。
答案 3 :(得分:-1)
如您所说,您使用 bot.login('TOKEN', () => { console.log; }
但 bot.login 不支持回调函数。
我的意思是,将之前的代码改为bot.login('TOKEN')
。