pyTelegramBotAPI 4.33.0__tar.gz → 4.34.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/PKG-INFO +3 -2
  2. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/README.md +1 -1
  3. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/conf.py +1 -1
  4. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/pyproject.toml +2 -2
  5. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/__init__.py +304 -6
  6. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/apihelper.py +121 -3
  7. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/async_telebot.py +319 -22
  8. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/asyncio_helper.py +122 -3
  9. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/types.py +540 -13
  10. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/util.py +46 -2
  11. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/version.py +1 -1
  12. pytelegrambotapi-4.34.0/tests/test_async_telebot.py +196 -0
  13. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/tests/test_handler_backends.py +2 -2
  14. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/tests/test_telebot.py +2 -1
  15. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/.github/ISSUE_TEMPLATE +0 -0
  16. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  17. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/.github/workflows/setup_python.yml +0 -0
  18. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/.gitignore +0 -0
  19. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/.readthedocs.yml +0 -0
  20. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/.travis.yml +0 -0
  21. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/LICENSE +0 -0
  22. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/doc_req.txt +0 -0
  23. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/Makefile +0 -0
  24. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/_static/logo.png +0 -0
  25. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/_static/logo2.png +0 -0
  26. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/async_version/index.rst +0 -0
  27. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/calldata.rst +0 -0
  28. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/formatting.rst +0 -0
  29. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/index.rst +0 -0
  30. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/install.rst +0 -0
  31. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/en/LC_MESSAGES/async_version.po +0 -0
  32. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/en/LC_MESSAGES/calldata.po +0 -0
  33. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/en/LC_MESSAGES/formatting.po +0 -0
  34. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/en/LC_MESSAGES/index.po +0 -0
  35. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/en/LC_MESSAGES/install.po +0 -0
  36. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/en/LC_MESSAGES/quick_start.po +0 -0
  37. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/en/LC_MESSAGES/sync_version.po +0 -0
  38. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/en/LC_MESSAGES/types.po +0 -0
  39. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/en/LC_MESSAGES/util.po +0 -0
  40. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/ru/LC_MESSAGES/async_version.po +0 -0
  41. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/ru/LC_MESSAGES/calldata.po +0 -0
  42. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/ru/LC_MESSAGES/formatting.po +0 -0
  43. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/ru/LC_MESSAGES/index.po +0 -0
  44. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/ru/LC_MESSAGES/install.po +0 -0
  45. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/ru/LC_MESSAGES/quick_start.po +0 -0
  46. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/ru/LC_MESSAGES/sync_version.po +0 -0
  47. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/ru/LC_MESSAGES/types.po +0 -0
  48. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/locales/ru/LC_MESSAGES/util.po +0 -0
  49. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/quick_start.rst +0 -0
  50. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/sync_version/index.rst +0 -0
  51. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/types.rst +0 -0
  52. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/docs/source/util.rst +0 -0
  53. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/anonymous_bot.py +0 -0
  54. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/callback_data_examples/advanced_calendar_example/filters.py +0 -0
  55. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/callback_data_examples/advanced_calendar_example/keyboards.py +0 -0
  56. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/callback_data_examples/advanced_calendar_example/main.py +0 -0
  57. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/callback_data_examples/simple_products_example.py +0 -0
  58. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/chat_join_request.py +0 -0
  59. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/chat_member_example.py +0 -0
  60. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/continue_handling.py +0 -0
  61. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/custom_filters/admin_filter_example.py +0 -0
  62. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/custom_filters/advanced_text_filter.py +0 -0
  63. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/custom_filters/general_custom_filters.py +0 -0
  64. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/custom_filters/id_filter_example.py +0 -0
  65. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/custom_filters/is_filter_example.py +0 -0
  66. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/custom_filters/text_filter_example.py +0 -0
  67. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/custom_states.py +0 -0
  68. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/detect_changes.py +0 -0
  69. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/download_file_example.py +0 -0
  70. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/echo_bot.py +0 -0
  71. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/exception_handler.py +0 -0
  72. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/formatting_example.py +0 -0
  73. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/message_reaction_example.py +0 -0
  74. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/middleware/flooding_middleware.py +0 -0
  75. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/middleware/i18n.py +0 -0
  76. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/i18n_base_midddleware.py +0 -0
  77. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/keyboards.py +0 -0
  78. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/locales/en/LC_MESSAGES/messages.po +0 -0
  79. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/locales/ru/LC_MESSAGES/messages.po +0 -0
  80. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/locales/uz_Latn/LC_MESSAGES/messages.po +0 -0
  81. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/main.py +0 -0
  82. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/mini_app.py +0 -0
  83. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/multibot/README.MD +0 -0
  84. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/multibot/config.py +0 -0
  85. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/multibot/handlers.py +0 -0
  86. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/multibot/main.py +0 -0
  87. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/multibot/nginx_conf.conf +0 -0
  88. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/register_handler.py +0 -0
  89. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/send_file_example.py +0 -0
  90. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/send_message_draft_example.py +0 -0
  91. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/set_command_example.py +0 -0
  92. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/skip_updates_example.py +0 -0
  93. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/timer_bot_async.py +0 -0
  94. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/update_listener.py +0 -0
  95. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/webhooks/async_webhook_aiohttp_echo_bot.py +0 -0
  96. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/webhooks/run_webhooks.py +0 -0
  97. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/asynchronous_telebot/webhooks/webhook_starlette_echo_bot.py +0 -0
  98. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/callback_data_examples/advanced_calendar_example/filters.py +0 -0
  99. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/callback_data_examples/advanced_calendar_example/keyboards.py +0 -0
  100. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/callback_data_examples/advanced_calendar_example/main.py +0 -0
  101. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/callback_data_examples/simple_products_example.py +0 -0
  102. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/chat_join_request.py +0 -0
  103. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/chat_member_example.py +0 -0
  104. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/continue_handling.py +0 -0
  105. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/create_invite_link.py +0 -0
  106. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/custom_filters/admin_filter_example.py +0 -0
  107. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/custom_filters/advanced_text_filter.py +0 -0
  108. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/custom_filters/general_custom_filters.py +0 -0
  109. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/custom_filters/id_filter_example.py +0 -0
  110. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/custom_filters/is_filter_example.py +0 -0
  111. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/custom_filters/text_filter_example.py +0 -0
  112. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/custom_states.py +0 -0
  113. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/deep_linking.py +0 -0
  114. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/detailed_example/detailed_example.py +0 -0
  115. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/detailed_example/kitten.jpg +0 -0
  116. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/detailed_example/rooster.jpg +0 -0
  117. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/detect_changes.py +0 -0
  118. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/download_file_example.py +0 -0
  119. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/echo_bot.py +0 -0
  120. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/formatting_example.py +0 -0
  121. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/inline_example.py +0 -0
  122. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/inline_keyboard_example.py +0 -0
  123. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/message_reaction_example.py +0 -0
  124. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/README.md +0 -0
  125. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/class_based/antiflood_middleware.py +0 -0
  126. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/class_based/basic_example.py +0 -0
  127. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/class_based/i18n_middleware/i18n_base_middleware.py +0 -0
  128. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/class_based/i18n_middleware/keyboards.py +0 -0
  129. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/class_based/i18n_middleware/locales/en/LC_MESSAGES/messages.po +0 -0
  130. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/class_based/i18n_middleware/locales/ru/LC_MESSAGES/messages.po +0 -0
  131. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/class_based/i18n_middleware/locales/uz_Latn/LC_MESSAGES/messages.po +0 -0
  132. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/class_based/i18n_middleware/main.py +0 -0
  133. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/function_based/i18n.py +0 -0
  134. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/function_based/i18n_gettext/i18n_class.py +0 -0
  135. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/function_based/i18n_gettext/keyboards.py +0 -0
  136. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/function_based/i18n_gettext/locales/en/LC_MESSAGES/messages.po +0 -0
  137. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/function_based/i18n_gettext/locales/ru/LC_MESSAGES/messages.po +0 -0
  138. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/function_based/i18n_gettext/locales/uz_Latn/LC_MESSAGES/messages.po +0 -0
  139. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/function_based/i18n_gettext/main.py +0 -0
  140. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/middleware/function_based/session.py +0 -0
  141. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/mini_app.py +0 -0
  142. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/mini_app_web/index.html +0 -0
  143. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/mini_app_web/script.js +0 -0
  144. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/mini_app_web/style.css +0 -0
  145. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/multibot/README.MD +0 -0
  146. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/multibot/config.py +0 -0
  147. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/multibot/handlers.py +0 -0
  148. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/multibot/main.py +0 -0
  149. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/multibot/nginx_conf.conf +0 -0
  150. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/payments_example.py +0 -0
  151. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/poll_example.py +0 -0
  152. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/register_handler.py +0 -0
  153. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/reply_keyboard_markup_example.py +0 -0
  154. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/send_message_draft_example.py +0 -0
  155. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/serverless/aws_lambda_function.py +0 -0
  156. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/serverless/azure_functions +0 -0
  157. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/serverless/flask_google_cloud_bot/.gcloudignore +0 -0
  158. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/serverless/flask_google_cloud_bot/app.yaml +0 -0
  159. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/serverless/flask_google_cloud_bot/main.py +0 -0
  160. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/serverless/flask_google_cloud_bot/requirements.txt +0 -0
  161. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/set_command_example.py +0 -0
  162. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/skip_updates_example.py +0 -0
  163. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/stars_payment.py +0 -0
  164. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/step_example.py +0 -0
  165. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/telebot_bot/telebot_bot.py +0 -0
  166. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/timer_bot.py +0 -0
  167. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/webhook_examples/README.md +0 -0
  168. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/webhook_examples/run_webhooks.py +0 -0
  169. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/webhook_examples/webhook_aiohttp_echo_bot.py +0 -0
  170. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/webhook_examples/webhook_cherrypy_echo_bot.py +0 -0
  171. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/webhook_examples/webhook_cpython_echo_bot.py +0 -0
  172. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/webhook_examples/webhook_fastapi_echo_bot.py +0 -0
  173. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/webhook_examples/webhook_flask_echo_bot.py +0 -0
  174. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/webhook_examples/webhook_flask_heroku_echo.py +0 -0
  175. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/webhook_examples/webhook_tornado_echo_bot.py +0 -0
  176. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/examples/webhook_examples/webhook_twisted_echo_bot.py +0 -0
  177. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/requirements.txt +0 -0
  178. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/asyncio_filters.py +0 -0
  179. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/asyncio_handler_backends.py +0 -0
  180. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/asyncio_storage/__init__.py +0 -0
  181. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/asyncio_storage/base_storage.py +0 -0
  182. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/asyncio_storage/memory_storage.py +0 -0
  183. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/asyncio_storage/pickle_storage.py +0 -0
  184. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/asyncio_storage/redis_storage.py +0 -0
  185. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/callback_data.py +0 -0
  186. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/custom_filters.py +0 -0
  187. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/ext/__init__.py +0 -0
  188. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/ext/aio/__init__.py +0 -0
  189. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/ext/aio/webhooks.py +0 -0
  190. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/ext/reloader.py +0 -0
  191. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/ext/sync/__init__.py +0 -0
  192. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/ext/sync/webhooks.py +0 -0
  193. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/formatting.py +0 -0
  194. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/handler_backends.py +0 -0
  195. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/py.typed +0 -0
  196. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/service_utils.py +0 -0
  197. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/states/__init__.py +0 -0
  198. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/states/asyncio/__init__.py +0 -0
  199. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/states/asyncio/context.py +0 -0
  200. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/states/asyncio/middleware.py +0 -0
  201. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/states/sync/__init__.py +0 -0
  202. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/states/sync/context.py +0 -0
  203. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/states/sync/middleware.py +0 -0
  204. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/storage/__init__.py +0 -0
  205. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/storage/base_storage.py +0 -0
  206. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/storage/memory_storage.py +0 -0
  207. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/storage/pickle_storage.py +0 -0
  208. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/telebot/storage/redis_storage.py +0 -0
  209. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/tests/__init__.py +0 -0
  210. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/tests/test_apihelper_95.py +0 -0
  211. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/tests/test_data/record.mp3 +0 -0
  212. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/tests/test_data/record.ogg +0 -0
  213. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/tests/test_data/record.wav +0 -0
  214. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/tests/test_data/test_video.mp4 +0 -0
  215. {pytelegrambotapi-4.33.0 → pytelegrambotapi-4.34.0}/tests/test_types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyTelegramBotAPI
3
- Version: 4.33.0
3
+ Version: 4.34.0
4
4
  Summary: Python Telegram bot API.
5
5
  Project-URL: Homepage, https://github.com/eternnoir/pyTelegramBotAPI
6
6
  Project-URL: Documentation, https://pytba.readthedocs.org
@@ -20,6 +20,7 @@ Classifier: Programming Language :: Python :: 3.12
20
20
  Classifier: Programming Language :: Python :: 3.13
21
21
  Classifier: Programming Language :: Python :: 3.14
22
22
  Requires-Python: >=3.10
23
+ Requires-Dist: aiohttp
23
24
  Requires-Dist: requests
24
25
  Provides-Extra: coloredlogs
25
26
  Requires-Dist: coloredlogs; extra == 'coloredlogs'
@@ -51,7 +52,7 @@ Description-Content-Type: text/markdown
51
52
  <p align="center">A simple, but extensible Python implementation for the <a href="https://core.telegram.org/bots/api">Telegram Bot API</a>.</p>
52
53
  <p align="center">Both synchronous and asynchronous.</p>
53
54
 
54
- ## <p align="center">Supported Bot API version: <a href="https://core.telegram.org/bots/api-changelog#april-3-2026"><img src="https://img.shields.io/badge/Bot%20API-9.6-blue?logo=telegram" alt="Supported Bot API version"></a>
55
+ ## <p align="center">Supported Bot API version: <a href="https://core.telegram.org/bots/api#may-8-2026"><img src="https://img.shields.io/badge/Bot%20API-10.0-blue?logo=telegram" alt="Supported Bot API version"></a>
55
56
 
56
57
  <h2><a href='https://pytba.readthedocs.io/en/latest/index.html'>Official documentation</a></h2>
57
58
  <h2><a href='https://pytba.readthedocs.io/ru/latest/index.html'>Official ru documentation</a></h2>
@@ -10,7 +10,7 @@
10
10
  <p align="center">A simple, but extensible Python implementation for the <a href="https://core.telegram.org/bots/api">Telegram Bot API</a>.</p>
11
11
  <p align="center">Both synchronous and asynchronous.</p>
12
12
 
13
- ## <p align="center">Supported Bot API version: <a href="https://core.telegram.org/bots/api-changelog#april-3-2026"><img src="https://img.shields.io/badge/Bot%20API-9.6-blue?logo=telegram" alt="Supported Bot API version"></a>
13
+ ## <p align="center">Supported Bot API version: <a href="https://core.telegram.org/bots/api#may-8-2026"><img src="https://img.shields.io/badge/Bot%20API-10.0-blue?logo=telegram" alt="Supported Bot API version"></a>
14
14
 
15
15
  <h2><a href='https://pytba.readthedocs.io/en/latest/index.html'>Official documentation</a></h2>
16
16
  <h2><a href='https://pytba.readthedocs.io/ru/latest/index.html'>Official ru documentation</a></h2>
@@ -22,7 +22,7 @@ author = 'coder2020official'
22
22
  copyright = f'2022-{datetime.now().year}, {author}'
23
23
 
24
24
  # The full version, including alpha/beta/rc tags
25
- release = '4.33.0'
25
+ release = '4.34.0'
26
26
 
27
27
 
28
28
  # -- General configuration ---------------------------------------------------
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pyTelegramBotAPI"
7
- version = "4.33.0"
7
+ version = "4.34.0"
8
8
  description = "Python Telegram bot API."
9
9
  authors = [{name = "eternnoir", email = "eternnoir@gmail.com"}]
10
10
  license = {text = "GPL2"}
@@ -22,7 +22,7 @@ classifiers = [
22
22
  "Environment :: Console",
23
23
  "License :: OSI Approved :: GNU General Public License v2 (GPLv2)"
24
24
  ]
25
- dependencies = ["requests"]
25
+ dependencies = ["requests", "aiohttp"]
26
26
 
27
27
  [project.urls]
28
28
  Homepage = "https://github.com/eternnoir/pyTelegramBotAPI"
@@ -250,6 +250,7 @@ class TeleBot:
250
250
  self.deleted_business_messages_handlers = []
251
251
  self.purchased_paid_media_handlers = []
252
252
  self.managed_bot_handlers = []
253
+ self.guest_message_handlers = []
253
254
 
254
255
  self.custom_filters = {}
255
256
  self.state_handlers = []
@@ -728,6 +729,7 @@ class TeleBot:
728
729
  new_deleted_business_messages = None
729
730
  new_purchased_paid_media = None
730
731
  new_managed_bots = None
732
+ new_guest_messages = None
731
733
 
732
734
  for update in updates:
733
735
  if apihelper.ENABLE_MIDDLEWARE and not self.use_class_middlewares:
@@ -815,6 +817,9 @@ class TeleBot:
815
817
  if update.managed_bot:
816
818
  if new_managed_bots is None: new_managed_bots = []
817
819
  new_managed_bots.append(update.managed_bot)
820
+ if update.guest_message:
821
+ if new_guest_messages is None: new_guest_messages = []
822
+ new_guest_messages.append(update.guest_message)
818
823
 
819
824
  if new_messages:
820
825
  self.process_new_messages(new_messages)
@@ -864,6 +869,8 @@ class TeleBot:
864
869
  self.process_new_purchased_paid_media(new_purchased_paid_media)
865
870
  if new_managed_bots:
866
871
  self.process_new_managed_bot(new_managed_bots)
872
+ if new_guest_messages:
873
+ self.process_new_guest_message(new_guest_messages)
867
874
 
868
875
  def process_new_messages(self, new_messages):
869
876
  """
@@ -1011,6 +1018,12 @@ class TeleBot:
1011
1018
  :meta private:
1012
1019
  """
1013
1020
  self._notify_command_handlers(self.managed_bot_handlers, new_managed_bots, 'managed_bot')
1021
+
1022
+ def process_new_guest_message(self, new_guest_messages):
1023
+ """
1024
+ :meta private:
1025
+ """
1026
+ self._notify_command_handlers(self.guest_message_handlers, new_guest_messages, 'guest_message')
1014
1027
 
1015
1028
  def process_middlewares(self, update):
1016
1029
  """
@@ -1601,7 +1614,7 @@ class TeleBot:
1601
1614
  return apihelper.leave_chat(self.token, chat_id)
1602
1615
 
1603
1616
 
1604
- def get_chat_administrators(self, chat_id: Union[int, str]) -> List[types.ChatMember]:
1617
+ def get_chat_administrators(self, chat_id: Union[int, str], return_bots: Optional[bool]=None) -> List[types.ChatMember]:
1605
1618
  """
1606
1619
  Use this method to get a list of administrators in a chat.
1607
1620
  On success, returns an Array of ChatMember objects that contains
@@ -1611,10 +1624,16 @@ class TeleBot:
1611
1624
 
1612
1625
  :param chat_id: Unique identifier for the target chat or username
1613
1626
  of the target supergroup or channel (in the format @channelusername)
1627
+ :type chat_id: :obj:`int` or :obj:`str`
1628
+
1629
+ :param return_bots: Pass True to additionally receive all bots that are administrators of the chat.
1630
+ By default, bots other than the current bot are omitted.
1631
+ :type return_bots: :obj:`bool`
1632
+
1614
1633
  :return: List made of ChatMember objects.
1615
1634
  :rtype: :obj:`list` of :class:`telebot.types.ChatMember`
1616
1635
  """
1617
- result = apihelper.get_chat_administrators(self.token, chat_id)
1636
+ result = apihelper.get_chat_administrators(self.token, chat_id, return_bots=return_bots)
1618
1637
  return [types.ChatMember.de_json(r) for r in result]
1619
1638
 
1620
1639
 
@@ -1652,6 +1671,24 @@ class TeleBot:
1652
1671
  :rtype: :obj:`int`
1653
1672
  """
1654
1673
  return apihelper.get_chat_member_count(self.token, chat_id)
1674
+
1675
+ def get_user_personal_chat_messages(self, user_id: int, limit: int) -> List[types.Message]:
1676
+ """
1677
+ Use this method to get the last messages from the personal chat (i.e., the chat currently added to their profile) of a given user. On success, an array of Message objects is returned.
1678
+
1679
+ Telegram documentation: https://core.telegram.org/bots/api#getuserpersonalchatmessages
1680
+
1681
+ :param user_id: Unique identifier for the target user
1682
+ :type user_id: :obj:`int`
1683
+
1684
+ :param limit: The maximum number of messages to return; 1-20
1685
+ :type limit: :obj:`int`
1686
+
1687
+ :return: List of Message objects.
1688
+ :rtype: :obj:`list` of :class:`telebot.types.Message`
1689
+ """
1690
+ result = apihelper.get_user_personal_chat_messages(self.token, user_id, limit)
1691
+ return [types.Message.de_json(r) for r in result]
1655
1692
 
1656
1693
 
1657
1694
  def set_chat_sticker_set(self, chat_id: Union[int, str], sticker_set_name: str) -> types.StickerSet:
@@ -2144,6 +2181,52 @@ class TeleBot:
2144
2181
  :return: Returns True on success.
2145
2182
  """
2146
2183
  return apihelper.delete_messages(self.token, chat_id, message_ids)
2184
+
2185
+ def delete_message_reaction(self, chat_id: Union[int, str], message_id: int, user_id: Optional[int]=None, actor_chat_id: Optional[int]=None) -> bool:
2186
+ """
2187
+ Use this method to remove a reaction from a message in a group or a supergroup chat.
2188
+ The bot must have the 'can_delete_messages' administrator right in the chat. Returns True on success.
2189
+
2190
+ Telegram documentation: https://core.telegram.org/bots/api#deletemessagereaction
2191
+
2192
+ :param chat_id: Unique identifier for the target chat or username of the target supergroup (in the format @username)
2193
+ :type chat_id: :obj:`int` or :obj:`str`
2194
+
2195
+ :param message_id: Identifier of the target message
2196
+ :type message_id: :obj:`int`
2197
+
2198
+ :param user_id: Identifier of the user whose reaction will be removed, if the reaction was added by a user
2199
+ :type user_id: :obj:`int`
2200
+
2201
+ :param actor_chat_id: Identifier of the chat whose reaction will be removed, if the reaction was added by a chat
2202
+ :type actor_chat_id: :obj:`int`
2203
+
2204
+ :return: Returns True on success.
2205
+ :rtype: :obj:`bool`
2206
+ """
2207
+ return apihelper.delete_message_reaction(self.token, chat_id, message_id, user_id=user_id, actor_chat_id=actor_chat_id)
2208
+
2209
+ def delete_all_message_reactions(self, chat_id: Union[int, str], user_id: Optional[int]=None, actor_chat_id: Optional[int]=None) -> bool:
2210
+ """
2211
+ Use this method to remove up to 10000 recent reactions in a group or a supergroup chat added by a given user or chat.
2212
+ The bot must have the 'can_delete_messages' administrator right in the chat. Returns True on success.
2213
+
2214
+ Telegram documentation: https://core.telegram.org/bots/api#deleteallmessagereactions
2215
+
2216
+ :param chat_id: Unique identifier for the target chat or username of the target supergroup (in the format @username)
2217
+ :type chat_id: :obj:`int` or :obj:`str`
2218
+
2219
+ :param user_id: Identifier of the user whose reactions will be removed, if the reactions were added by a user
2220
+ :type user_id: :obj:`int`
2221
+
2222
+ :param actor_chat_id: Identifier of the chat whose reactions will be removed, if the reactions were added by a chat
2223
+ :type actor_chat_id: :obj:`int`
2224
+
2225
+ :return: Returns True on success.
2226
+ :rtype: :obj:`bool`
2227
+ """
2228
+ return apihelper.delete_all_message_reactions(self.token, chat_id, user_id=user_id, actor_chat_id=actor_chat_id)
2229
+
2147
2230
 
2148
2231
 
2149
2232
  def forward_messages(self, chat_id: Union[str, int], from_chat_id: Union[str, int], message_ids: List[int],
@@ -2564,6 +2647,98 @@ class TeleBot:
2564
2647
  direct_messages_topic_id=direct_messages_topic_id, suggested_post_parameters=suggested_post_parameters
2565
2648
  )
2566
2649
  )
2650
+
2651
+ def send_live_photo(
2652
+ self, chat_id: Union[int, str], live_photo: Union[Any, str], photo: Union[Any, str],
2653
+ message_thread_id: Optional[int]=None, business_connection_id: Optional[str]=None,
2654
+ caption: Optional[str]=None, parse_mode: Optional[str]=None,
2655
+ caption_entities: Optional[List[types.MessageEntity]]=None, show_caption_above_media: Optional[bool]=None,
2656
+ has_spoiler: Optional[bool]=None, disable_notification: Optional[bool]=None, protect_content: Optional[bool]=None,
2657
+ allow_paid_broadcast: Optional[bool]=None, message_effect_id: Optional[str]=None,
2658
+ suggested_post_parameters: Optional[types.SuggestedPostParameters]=None, reply_parameters: Optional[types.ReplyParameters]=None,
2659
+ reply_markup: Optional[REPLY_MARKUP_TYPES]=None) -> types.Message:
2660
+ """
2661
+ Use this method to send live photos. On success, the sent Message is returned.
2662
+
2663
+ Telegram documentation: https://core.telegram.org/bots/api#sendlivephoto
2664
+
2665
+ :param message_thread_id: Identifier of a message thread, in which the message will be sent
2666
+ :type message_thread_id: :obj:`int`
2667
+
2668
+ :param business_connection_id: Unique identifier of the business connection on behalf of which the message will be sent
2669
+ :type business_connection_id: :obj:`str`
2670
+
2671
+ :param chat_id: Unique identifier for the target chat or username of the target channel (in the format @channelusername)
2672
+ :type chat_id: :obj:`int` or :obj:`str`
2673
+
2674
+ :param live_photo: Live photo video to send. The video must be no longer than 10 seconds and must not exceed 10 MB in size.
2675
+ Pass a file_id as String to send a video that exists on the Telegram servers (recommended) or upload a new video using multipart/form-data.
2676
+ More information on Sending Files ». Sending live photos by a URL is currently unsupported.
2677
+ :type live_photo: :obj:`str` or :class:`telebot.types.InputFile`
2678
+
2679
+ :param photo: The static photo to send. Pass a file_id as String to send a photo that exists on the Telegram servers (recommended) or upload a new video using multipart/form-data.
2680
+ More information on Sending Files ». Sending live photos by a URL is currently unsupported.
2681
+ :type photo: :obj:`str` or :class:`telebot.types.InputFile`
2682
+
2683
+ :param caption: Video caption (may also be used when resending videos by file_id), 0-1024 characters after entities parsing
2684
+ :type caption: :obj:`str`
2685
+
2686
+ :param parse_mode: Mode for parsing entities in the video caption. See formatting options for more details.
2687
+ :type parse_mode: :obj:`str`
2688
+
2689
+ :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of parse_mode
2690
+ :type caption_entities: :obj:`list` of :class:`telebot.types.MessageEntity`
2691
+
2692
+ :param show_caption_above_media: Pass True, if the caption must be shown above the message media
2693
+ :type show_caption_above_media: :obj:`bool`
2694
+
2695
+ :param has_spoiler: Pass True if the video needs to be covered with a spoiler animation
2696
+ :type has_spoiler: :obj:`bool`
2697
+
2698
+ :param disable_notification: Sends the message silently. Users will receive a notification with no sound.
2699
+ :type disable_notification: :obj:`bool`
2700
+
2701
+ :param protect_content: Protects the contents of the sent message from forwarding and saving
2702
+ :type protect_content: :obj:`bool`
2703
+
2704
+ :param allow_paid_broadcast: Pass True to allow up to 1000 messages per second, ignoring broadcasting limits for a fee of 0.1 Telegram
2705
+ Stars per message. The relevant Stars will be withdrawn from the bot's balance.
2706
+ :type allow_paid_broadcast: :obj:`bool`
2707
+
2708
+ :param message_effect_id: Unique identifier of the message effect to be added to the message; for private chats only
2709
+ :type message_effect_id: :obj:`str`
2710
+
2711
+ :param suggested_post_parameters: A JSON-serialized object containing the parameters of the suggested post to send; for direct messages chats only.
2712
+ If the message is sent as a reply to another suggested post, then that suggested post is automatically declined
2713
+ :type suggested_post_parameters: :class:`telebot.types.SuggestedPostParameters`
2714
+
2715
+ :param reply_parameters: Additional parameters for replies to messages
2716
+ :type reply_parameters: :class:`telebot.types.ReplyParameters`
2717
+
2718
+ :param reply_markup: Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions
2719
+ to remove a reply keyboard or to force a reply from the user.
2720
+ :type reply_markup: :class:`telebot.types.InlineKeyboardMarkup` or :class:`telebot.types.ReplyKeyboardMarkup` or :class:`telebot.types.ReplyKeyboardRemove`
2721
+ or :class:`telebot.types.ForceReply`
2722
+
2723
+ :return: On success, the sent Message is returned.
2724
+ :rtype: :class:`telebot.types.Message`
2725
+ """
2726
+ parse_mode = self.parse_mode if (parse_mode is None) else parse_mode
2727
+ disable_notification = self.disable_notification if (disable_notification is None) else disable_notification
2728
+ protect_content = self.protect_content if (protect_content is None) else protect_content
2729
+
2730
+ return types.Message.de_json(
2731
+ apihelper.send_live_photo(
2732
+ self.token, chat_id, live_photo, photo, message_thread_id=message_thread_id,
2733
+ business_connection_id=business_connection_id, caption=caption, parse_mode=parse_mode,
2734
+ caption_entities=caption_entities, show_caption_above_media=show_caption_above_media,
2735
+ has_spoiler=has_spoiler, disable_notification=disable_notification, protect_content=protect_content,
2736
+ allow_paid_broadcast=allow_paid_broadcast, message_effect_id=message_effect_id,
2737
+ suggested_post_parameters=suggested_post_parameters, reply_parameters=reply_parameters,
2738
+ reply_markup=reply_markup
2739
+ )
2740
+ )
2741
+
2567
2742
 
2568
2743
  def send_audio(
2569
2744
  self, chat_id: Union[int, str], audio: Union[Any, str],
@@ -3659,7 +3834,8 @@ class TeleBot:
3659
3834
  self, chat_id: Union[int, str],
3660
3835
  media: List[Union[
3661
3836
  types.InputMediaAudio, types.InputMediaDocument,
3662
- types.InputMediaPhoto, types.InputMediaVideo]],
3837
+ types.InputMediaPhoto, types.InputMediaVideo,
3838
+ types.InputMediaLivePhoto]],
3663
3839
  disable_notification: Optional[bool]=None,
3664
3840
  protect_content: Optional[bool]=None,
3665
3841
  reply_to_message_id: Optional[int]=None, # deprecated, for backward compatibility
@@ -4263,7 +4439,7 @@ class TeleBot:
4263
4439
  :param draft_id: Unique identifier of the message draft; must be non-zero. Changes of drafts with the same identifier are animated
4264
4440
  :type draft_id: :obj:`int`
4265
4441
 
4266
- :param text: Text of the message to be sent, 1-4096 characters after entities parsing
4442
+ :param text: Text of the message to be sent, 0-4096 characters after entities parsing. Pass an empty text to show a “Thinking…” placeholder.
4267
4443
  :type text: :obj:`str`
4268
4444
 
4269
4445
  :param parse_mode: Mode for parsing entities in the message text. See formatting options for more details.
@@ -5268,6 +5444,42 @@ class TeleBot:
5268
5444
  """
5269
5445
  return apihelper.replace_managed_bot_token(self.token, user_id)
5270
5446
 
5447
+ def get_managed_bot_access_settings(self, user_id: int) -> types.BotAccessSettings:
5448
+ """
5449
+ Use this method to get the access settings of a managed bot. Returns a BotAccessSettings object on success.
5450
+
5451
+ Telegram documentation: https://core.telegram.org/bots/api#getmanagedbotaccesssettings
5452
+
5453
+ :param user_id: User identifier of the managed bot whose access settings will be returned
5454
+ :type user_id: :obj:`int`
5455
+
5456
+ :return: Returns a BotAccessSettings object on success.
5457
+ :rtype: :class:`telebot.types.BotAccessSettings`
5458
+ """
5459
+ return types.BotAccessSettings.de_json(
5460
+ apihelper.get_managed_bot_access_settings(self.token, user_id)
5461
+ )
5462
+
5463
+ def set_managed_bot_access_settings(self, user_id: int, is_access_restricted: bool, added_user_ids: Optional[List[int]]=None) -> bool:
5464
+ """
5465
+ Use this method to change the access settings of a managed bot. Returns True on success.
5466
+
5467
+ Telegram documentation: https://core.telegram.org/bots/api#setmanagedbotaccesssettings
5468
+
5469
+ :param user_id: User identifier of the managed bot whose access settings will be changed
5470
+ :type user_id: :obj:`int`
5471
+
5472
+ :param is_access_restricted: Pass True, if only selected users can access the bot. The bot's owner can always access it.
5473
+ :type is_access_restricted: :obj:`bool`
5474
+
5475
+ :param added_user_ids: A JSON-serialized list of up to 10 identifiers of users who will have access to the bot in addition to its owner. Ignored if is_access_restricted is false.
5476
+ :type added_user_ids: :obj:`list` of :obj:`int`
5477
+
5478
+ :return: True on success.
5479
+ :rtype: :obj:`bool`
5480
+ """
5481
+ return apihelper.set_managed_bot_access_settings(self.token, user_id, is_access_restricted, added_user_ids=added_user_ids)
5482
+
5271
5483
  def set_my_commands(self, commands: List[types.BotCommand],
5272
5484
  scope: Optional[types.BotCommandScope]=None,
5273
5485
  language_code: Optional[str]=None) -> bool:
@@ -6121,7 +6333,11 @@ class TeleBot:
6121
6333
  correct_option_ids: Optional[List[int]]=None,
6122
6334
  description: Optional[str]=None,
6123
6335
  description_parse_mode: Optional[str]=None,
6124
- description_entities: Optional[List[types.MessageEntity]]=None) -> types.Message:
6336
+ description_entities: Optional[List[types.MessageEntity]]=None,
6337
+ members_only: Optional[bool]=None,
6338
+ country_codes: Optional[List[str]]=None,
6339
+ media: Optional[types.InputPollMedia]=None,
6340
+ explanation_media: Optional[types.InputPollMedia]=None) -> types.Message:
6125
6341
  """
6126
6342
  Use this method to send a native poll.
6127
6343
  On success, the sent Message is returned.
@@ -6220,6 +6436,13 @@ class TeleBot:
6220
6436
  :param hide_results_until_closes: Pass True, if poll results must be shown only after the poll closes
6221
6437
  :type hide_results_until_closes: :obj:`bool`
6222
6438
 
6439
+ :param members_only: Pass True, if voting is limited to users who have been members of the chat where the poll is being sent for more than 24 hours; for channel chats only
6440
+ :type members_only: :obj:`bool`
6441
+
6442
+ :param country_codes: A JSON-serialized list of 0-12 two-letter ISO 3166-1 alpha-2 country codes indicating the countries from which users can vote in the poll;
6443
+ for channel chats only. If omitted or empty, then users from any country can participate in the poll.
6444
+ :type country_codes: :obj:`list` of :obj:`str`
6445
+
6223
6446
  :param correct_option_ids: A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode
6224
6447
  :type correct_option_ids: :obj:`list` of :obj:`int`
6225
6448
 
@@ -6232,6 +6455,12 @@ class TeleBot:
6232
6455
  :param description_entities: A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of description_parse_mode
6233
6456
  :type description_entities: :obj:`list` of :obj:`MessageEntity`
6234
6457
 
6458
+ :param media: Media added to the poll description
6459
+ :type media: :obj:`types.InputPollMedia`
6460
+
6461
+ :param explanation_media: Media added to the quiz explanation
6462
+ :type explanation_media: :obj:`types.InputPollMedia`
6463
+
6235
6464
  :return: On success, the sent Message is returned.
6236
6465
  :rtype: :obj:`types.Message`
6237
6466
  """
@@ -6302,7 +6531,8 @@ class TeleBot:
6302
6531
  message_effect_id=message_effect_id, allow_paid_broadcast=allow_paid_broadcast,
6303
6532
  allows_revoting=allows_revoting, shuffle_options=shuffle_options,
6304
6533
  allow_adding_options=allow_adding_options, hide_results_until_closes=hide_results_until_closes, correct_option_ids=correct_option_ids,
6305
- description=description, description_parse_mode=description_parse_mode, description_entities=description_entities)
6534
+ description=description, description_parse_mode=description_parse_mode, description_entities=description_entities,
6535
+ members_only=members_only, country_codes=country_codes, media=media, explanation_media=explanation_media)
6306
6536
  )
6307
6537
 
6308
6538
 
@@ -6666,6 +6896,26 @@ class TeleBot:
6666
6896
  """
6667
6897
  return apihelper.answer_callback_query(
6668
6898
  self.token, callback_query_id, text=text, show_alert=show_alert, url=url, cache_time=cache_time)
6899
+
6900
+
6901
+ def answer_guest_query(self, guest_query_id: str, result: types.InlineQueryResultBase) -> types.SentGuestMessage:
6902
+ """
6903
+ Use this method to reply to a received guest message. On success, a SentGuestMessage object is returned.
6904
+
6905
+ Telegram documentation: https://core.telegram.org/bots/api#answerguestquery
6906
+
6907
+ :param guest_query_id: Unique identifier for the query to be answered
6908
+ :type guest_query_id: :obj:`str`
6909
+
6910
+ :param result: A JSON-serialized object describing the message to be sent
6911
+ :type result: :obj:`types.InlineQueryResult`
6912
+
6913
+ :return: On success, a SentGuestMessage object is returned.
6914
+ :rtype: :obj:`types.SentGuestMessage`
6915
+ """
6916
+ return types.SentGuestMessage.de_json(
6917
+ apihelper.answer_guest_query(self.token, guest_query_id, result)
6918
+ )
6669
6919
 
6670
6920
 
6671
6921
  def get_user_chat_boosts(self, chat_id: Union[int, str], user_id: int) -> types.UserChatBoosts:
@@ -10499,6 +10749,54 @@ class TeleBot:
10499
10749
  handler_dict = self._build_handler_dict(callback, func=func, pass_bot=pass_bot, **kwargs)
10500
10750
  self.add_managed_bot_handler(handler_dict)
10501
10751
 
10752
+ def guest_message_handler(self, func=None, **kwargs):
10753
+ """
10754
+ New guest message. Use :field:`telebot.types.Message.guest_query_id` from the received message and the method :meth:`answer_guest_query` to send a response.
10755
+
10756
+ :param func: Function executed as a filter
10757
+ :type func: :obj:`function`
10758
+
10759
+ :param kwargs: Optional keyword arguments(custom filters)
10760
+ :return: None
10761
+ """
10762
+ def decorator(handler):
10763
+ handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
10764
+ self.add_guest_message_handler(handler_dict)
10765
+ return handler
10766
+
10767
+ return decorator
10768
+
10769
+ def add_guest_message_handler(self, handler_dict):
10770
+ """
10771
+ Adds a guest_message handler.
10772
+ Note that you should use register_guest_message_handler to add guest_message_handler to the bot.
10773
+
10774
+ :meta private:
10775
+
10776
+ :param handler_dict:
10777
+ :return:
10778
+ """
10779
+ self.guest_message_handlers.append(handler_dict)
10780
+
10781
+ def register_guest_message_handler(self, callback: Callable, func: Optional[Callable]=None, pass_bot: Optional[bool]=False, **kwargs):
10782
+ """
10783
+ Registers guest message handler.
10784
+
10785
+ :param callback: function to be called
10786
+ :type callback: :obj:`function`
10787
+
10788
+ :param func: Function executed as a filter
10789
+ :type func: :obj:`function`
10790
+
10791
+ :param pass_bot: True if you need to pass TeleBot instance to handler(useful for separating handlers into different files)
10792
+ :type pass_bot: :obj:`bool`
10793
+
10794
+ :param kwargs: Optional keyword arguments(custom filters)
10795
+ :return: None
10796
+ """
10797
+ handler_dict = self._build_handler_dict(callback, func=func, pass_bot=pass_bot, **kwargs)
10798
+ self.add_guest_message_handler(handler_dict)
10799
+
10502
10800
 
10503
10801
  def add_custom_filter(self, custom_filter: Union[SimpleCustomFilter, AdvancedCustomFilter]):
10504
10802
  """