python-telegram-bot:更改代码并重新运行后,如何保持bot工作

时间:2018-08-05 17:51:10

标签: python python-telegram-bot

我正在尝试使用python-telegram-bot创建电报机器人。对于这个机器人,我正在使用ConversationHandler。问题是当我更改代码并重新运行它时,机器人会一直等到用户输入命令(例如/start)以跳入entry_points。有没有不用输入命令就可以进入entry_points的方法?如果没有,是否可以向所有用户发送消息以通知他们输入命令?

2 个答案:

答案 0 :(得分:1)

是否可以在不输入命令的情况下进入入口点?-您需要一些事件让bot识别出它需要调用对话处理程序。您可以使它仅对带有Handler的任何消息做出反应,例如MessageHandler,但是随后您将需要检查消息并确定bot实际上是否需要继续对它做出反应还是简单地忽略它。它的问题在于,bot会为用户键入的每个消息做一些工作。如果您要的是它,那么就去做吧,否则,这会造成很多开销,这就是为什么使用命令以使bot只对选定的消息做出反应的原因。

是否可以向所有用户发送消息以通知他们输入命令?-不幸的是,漫游器无法启动与用户的对话,因此您将需要其他方式来实现。 / start 命令是Telegram中的全局命令,指示开始与用户进行交互。来自文档:用户首次打开与您的漫游器的对话时,将看到“开始”按钮。也许您可以使用/ setdescription或/ setabouttext命令在小组中设置欢迎消息,以根据需要提供更多信息。

答案 1 :(得分:0)

您可以将每个用户的ConversationHandler的状态存储在db左右,并且当您重新启动bot时,可以再次将状态插入到处理程序中,但这可能不那么容易...

如果我理解正确,您想在更新/重新启动后通知用户...但这也有些棘手,因为bot api限制了您在特定时间内可以发送多少条消息(没有方法可以发送给所有人),因此您必须在一段时间内延长这些通知的时间...