隐藏标题

内容

我们为您准备了一个您无法拒绝的包装

我们拥有一个充满活力的开发者社区,在我们的Telegram群组中互相帮助。加入我们吧!

关注我们的 Telegram频道 ,获取图书馆更新和新发布的信息。

这个库为 Telegram Bot API 提供了一个纯 Python、异步接口。它兼容 Python 版本 3.8+

除了纯API实现外,该库还提供了几种便利方法和快捷方式,以及一些高级类,使机器人的开发变得简单而直接。这些类包含在telegram.ext子模块中。

安装完installing库之后,请务必查看working with PTB部分。

本库原生支持 Telegram Bot API 7.7 的所有类型和方法。此外,尚未原生包含的 Bot API 功能仍可按照 我们的 wiki 中的描述使用。

您可以通过以下方式安装或升级 python-telegram-bot

$ pip install python-telegram-bot --upgrade

要安装预发布版本,请额外使用 --pre 标志

你也可以从源代码安装 python-telegram-bot,尽管这通常是不必要的。

$ git clone https://github.com/python-telegram-bot/python-telegram-bot $ cd python-telegram-bot $ pip install build $ python -m build

为了让您能够验证您下载的发布文件确实是由python-telegram-bot团队提供的,我们已经采取了以下措施。

从 v21.4 版本开始,所有发布都通过 sigstore 进行签名。相应的签名文件已上传到 GitHub 发布页面。要验证签名,请安装 sigstore Python 客户端 并按照 从 GitHub Actions 验证签名的说明 进行操作。作为 --repository 参数的输入,请使用值 python-telegram-bot/python-telegram-bot

早期版本使用 GPG 密钥进行签名。签名已上传到 GitHub 发布页面PyPI 项目,并以 .asc 后缀结尾。请在 此处 找到公钥。密钥的命名格式为 <first_version>-<last_version>.gpg

此外,GitHub 发布页面还包含了带有后缀.sha1的文件中发布文件的 sha1 哈希值。

python-telegram-bot 尽可能少地使用第三方依赖。然而,对于一些功能,使用第三方库比再次实现功能更明智。由于这些功能是 可选的,因此相应的第三方依赖不会默认安装。相反,它们被列为可选依赖项。这样可以避免不需要可选功能的用户发生不必要的依赖冲突。

唯一需要的依赖是 httpx ~= 0.27,用于 telegram.request.HTTPXRequest,默认的网络后端。

python-telegram-bot 与其他库一起使用时效果最佳。为了减少依赖冲突,我们在(可选)依赖项的版本要求上尽量宽松。另一方面,我们必须确保 python-telegram-bot 的稳定性,这就是为什么我们会应用版本范围。如果由于这些范围而遇到依赖冲突,请随时联系我们。

PTB可以安装可选依赖项:

  • pip install "python-telegram-bot[passport]" 安装 cryptography>=39.0.1 库。如果您想使用 Telegram Passport 相关功能,请使用此命令。
  • pip install "python-telegram-bot[socks]" 安装 httpx[socks]。如果您想在 Socks5 服务器后面工作,请使用此选项。
  • pip install "python-telegram-bot[http2]" 安装 httpx[http2]。如果您想使用 HTTP/2,请使用此命令。
  • pip install "python-telegram-bot[rate-limiter]" 安装 aiolimiter~=1.1.0。如果您想使用 telegram.ext.AIORateLimiter,请使用此命令。
  • pip install "python-telegram-bot[webhooks]" 安装 tornado~=6.4 库。如果要使用 telegram.ext.Updater.start_webhook/telegram.ext.Application.run_webhook,请使用此命令。
  • pip install "python-telegram-bot[job-queue]" 安装 APScheduler~=3.10.4 库并强制安装 pytz>=2018.6,其中 pytzAPScheduler 的一个依赖项。如果要使用 telegram.ext.JobQueue,请使用此命令。

要安装多个可选依赖项,请用逗号分隔它们,例如 pip install "python-telegram-bot[socks,webhooks]"

此外,还提供了两个快捷方式:

  • pip install "python-telegram-bot[all]" 安装所有可选依赖项。
  • pip install "python-telegram-bot[ext]" 安装所有与 telegram.ext 相关的可选依赖项,即 [rate-limiter, webhooks, callback-data, job-queue]

一旦您安装了这个库,您就可以开始使用它了 - 让我们开始吧!

我们的维基包含了一个API介绍,解释了如何通过python-telegram-bot访问纯净的Bot API。此外,教程:你的第一个机器人介绍了如何借助telegram.ext模块轻松编写聊天机器人。

  • 包文档python-telegram-bot 的技术参考。其中包含所有可用类、模块、方法和参数的描述,以及更新日志
  • wiki 是许多更详细介绍 python-telegram-bot 不同功能以及其他有用资源的家园,超越技术文档。
  • 我们的示例部分包含了几个示例,展示了Bot API和python-telegram-bot的不同功能。即使这不是您学习的方式,请看一下echobot.py。这是大多数机器人的事实基础。这些示例的代码已发布到公共领域,因此您可以从获取代码并在其基础上构建。

如果上述提到的资源无法回答您的问题或让您感到不知所措,那么有几种获取帮助的方式。

  1. 我们拥有一个充满活力的开发者社区,在我们的Telegram群组中互相帮助。加入我们吧!在这里提问通常是获得正确指引的最快方式。
  1. 通过打开讨论来提问。
  1. 你甚至可以在 Stack Overflow 上使用 python-telegram-bot 标签 寻求帮助。

自 v20.0 版本开始,python-telegram-bot 基于 Python 的 asyncio 模块构建。由于 asyncio 通常是单线程的,python-telegram-bot 目前不打算做到线程安全。python-telegram-bot API 中值得注意的部分可能会在多线程环境中引起问题(例如竞态条件)包括:

  • telegram.ext.Application/Updater.update_queue
  • telegram.ext.ConversationHandler.check/handle_update
  • telegram.ext.CallbackDataCache
  • telegram.ext.BasePersistence
  • telegram.ext.filters 模块中的所有类,允许在运行时添加/移除允许的用户/聊天

欢迎各种规模的贡献。请查阅我们的贡献指南开始。您也可以通过报告错误或提出功能请求来提供帮助。

偶尔会有人问我们是否接受捐赠来支持开发。虽然我们感谢这种想法,但维护 PTB 是我们的爱好,几乎没有任何运营成本。因此,我们没有设置接受捐赠的方式。如果您仍然想捐赠,我们恳请您选择捐赠给其他开源项目/倡议。

您可以复制、分发和修改软件,前提是修改必须进行描述并在LGPL-3下免费许可。派生作品(包括修改或任何静态链接到库的内容)只能在LGPL-3下重新分发,但使用该库的应用程序则无需如此。

总结
python-telegram-bot是一个提供纯Python异步接口的Telegram Bot API库,兼容Python版本3.8+。除了提供纯API实现外,还包含方便的方法和快捷方式,以及一些高级类,使机器人开发变得简单。库支持Telegram Bot API 7.7的所有类型和方法。安装后,可以使用pip安装或升级python-telegram-bot。库尽量减少第三方依赖,但某些功能需要第三方库,这些库作为可选依赖。python-telegram-bot最有用时与其他库一起使用,可以通过安装带有可选依赖的python-telegram-bot来安装。此外,提供了多个可选依赖的安装快捷方式。库提供了详细的文档和教程,帮助用户开始使用。