Heroku 上的 Telegram 机器人请求用户输入的问题

Issue with request for user input from Telegram bot on Heroku

我正在尝试在 Heroku 上部署此 Telegram 机器人*:https://github.com/radinshayanfar/TGCopyBot。机器人首先需要登录我的帐户,这需要一个登录代码,该登录代码会发送到我已经登录的设备上。当 运行 机器人从终端本地时,它会请求用户输入, Enter code:,然后我在终端中输入登录代码并按 Enter 键,然后机器人继续工作。但是在 Heroku 和 运行 dyno 上部署机器人后,它失败了,这在日志中显示:

2021-06-26T12:55:33.312544+00:00 app[worker.1]: Enter code:Traceback (most recent call last):
2021-06-26T12:55:33.312546+00:00 app[worker.1]:   File "/app/app/main.py", line 77, in <module>
2021-06-26T12:55:33.312729+00:00 app[worker.1]:     tg.login()
2021-06-26T12:55:33.312730+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.9/site-packages/telegram/client.py", line 493, in login
2021-06-26T12:55:33.312946+00:00 app[worker.1]:     result = actions[authorization_state]()
2021-06-26T12:55:33.312948+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.9/site-packages/telegram/client.py", line 585, in _send_telegram_code
2021-06-26T12:55:33.313163+00:00 app[worker.1]:     code = input('Enter code:')
2021-06-26T12:55:33.313168+00:00 app[worker.1]: EOFError: EOF when reading a line
2021-06-26T12:55:33.373308+00:00 heroku[worker.1]: Process exited with status 1
2021-06-26T12:55:33.427790+00:00 heroku[worker.1]: State changed from up to crashed

然后它可能会再次自动启动bot,并继续崩溃并输出与上述相同的错误。这里有什么问题,如何解决?

如果问题是它对登录代码的请求,那么我确实在我的其他设备上收到了登录代码,但我该如何将登录代码提供给机器人?更一般地说,您如何响应部署在 Heroku 上的任何机器人的用户输入请求?

*不是真正由@BotFather 制作的 Telegram 机器人;它只使用 Telegram API 开发工具

在您的本地环境中,内置 input 工作正常,因为您可以访问终端并可以提供输入。

在 Heroku 上没有这样的选项,所以命令 returns 出现 EOFError 异常,因为该函数在没有读取任何内容的情况下遇到了文件结束条件 (EOF)。

一个可能的解决方案可能是要求用户通过 Telegram Bot 输入 login code,例如作为用户开始聊天后的第一步。

问题似乎出在用户输入请求上,用户无法像在终端上那样直接在 Heroku 上输入任何内容。在这种情况下,可以修改代码以接受将作为环境变量输入的内容,例如使用会话字符串:https://docs.pyrogram.org/topics/storage-engines#session-strings, https://docs.telethon.dev/en/latest/concepts/sessions.html#string-sessions