【问题标题】:Making a Python-Telegram-Bot persistent使 Python-Telegram-Bot 持久化
【发布时间】:2020-03-10 01:19:51
【问题描述】:

我最近使用 python-telegram-bot 库编写了一个简单的电报机器人,并将这个机器人部署在 Heroku 上。 现在我正在寻找一种使机器人持久化的有效方法,允许它在运行之间存储 Bot_data 和 user_data 。 我查看了库提供的持久性类,我了解到 PicklePersistence 不适用于 heroku 的“临时”硬盘驱动器。 我的问题是,我如何实现机器人的持久性以使其在 heroku 上工作?我是不是该 放弃存储 bot_data 并更改设计以依赖外部数据库来存储我需要的数据?

【问题讨论】:

    标签: python heroku persistence python-telegram-bot


    【解决方案1】:

    我建议并尝试为您的电报机器人实现一个数据库。这将使您的机器人更上一层楼,您还可以将 web 应用程序连接到数据库并在那里添加更多功能。

    首先,您可以尝试MongoDB atlas 数据库的免费层。您可以使用此数据库来存储您的数据并在需要时获取它。

    当然,您也可以查看其他数据库解决方案。

    【讨论】:

    • 感谢您的回答,一个后续问题:在我的实现中,我需要存储一些完整的对象,例如我收到的消息。你将如何在数据库中存储类似的东西?我需要序列化它才能存储它?
    • 如果您要在 Python 中使用 MongoDB,您将使用 Pymongo 与您的数据库进行通信。正如您可以在本教程中阅读的更多内容,您将继续使用要存储的数据(chatId、userId、时间戳、消息等)创建一个 dict,然后可以使用 insert 将其发送到您的数据库。您还可以使用 Pymongo 在您的集合中查找用于您的机器人的元素。
    • 非常感谢,我认为 MongoDB 实际上是要走的路,因为它可以让我保留字典的抽象,这与数据存储在 bot_data 和 user_data 中的方式相同。所以实现甚至不需要改变那么多。再次感谢您。
    • 你好塞缪尔,你介意分享你的架构吗?我面临同样的挑战,很高兴向您学习。我特别感兴趣的是如何在 bot 启动时从数据库将数据加载到 .context 变量中
    • @OrenPinsky 查看 python-telegram-bot 规范。如何使用这些变量非常清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 2019-08-07
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2015-11-26
    相关资源
    最近更新 更多