pyTelegramBotAPI 4.26.0__tar.gz → 4.28.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 (211) hide show
  1. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/PKG-INFO +6 -4
  2. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/README.md +2 -1
  3. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/conf.py +1 -1
  4. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/serverless/flask_google_cloud_bot/requirements.txt +1 -1
  5. pytelegrambotapi-4.28.0/examples/stars_payment.py +64 -0
  6. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/pyproject.toml +2 -3
  7. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/requirements.txt +1 -1
  8. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/__init__.py +655 -34
  9. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/apihelper.py +230 -4
  10. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/async_telebot.py +653 -34
  11. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_filters.py +1 -1
  12. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_helper.py +227 -5
  13. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_storage/base_storage.py +30 -6
  14. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/formatting.py +9 -4
  15. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/states/asyncio/context.py +2 -2
  16. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/storage/base_storage.py +30 -6
  17. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/types.py +1600 -33
  18. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/util.py +3 -2
  19. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/version.py +1 -1
  20. pytelegrambotapi-4.28.0/tests/__init__.py +0 -0
  21. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/tests/test_telebot.py +51 -30
  22. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/.github/ISSUE_TEMPLATE +0 -0
  23. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  24. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/.github/workflows/setup_python.yml +0 -0
  25. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/.gitignore +0 -0
  26. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/.readthedocs.yml +0 -0
  27. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/.travis.yml +0 -0
  28. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/LICENSE +0 -0
  29. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/doc_req.txt +0 -0
  30. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/Makefile +0 -0
  31. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/_static/logo.png +0 -0
  32. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/_static/logo2.png +0 -0
  33. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/async_version/index.rst +0 -0
  34. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/calldata.rst +0 -0
  35. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/formatting.rst +0 -0
  36. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/index.rst +0 -0
  37. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/install.rst +0 -0
  38. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/async_version.po +0 -0
  39. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/calldata.po +0 -0
  40. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/formatting.po +0 -0
  41. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/index.po +0 -0
  42. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/install.po +0 -0
  43. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/quick_start.po +0 -0
  44. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/sync_version.po +0 -0
  45. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/types.po +0 -0
  46. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/util.po +0 -0
  47. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/async_version.po +0 -0
  48. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/calldata.po +0 -0
  49. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/formatting.po +0 -0
  50. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/index.po +0 -0
  51. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/install.po +0 -0
  52. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/quick_start.po +0 -0
  53. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/sync_version.po +0 -0
  54. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/types.po +0 -0
  55. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/util.po +0 -0
  56. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/quick_start.rst +0 -0
  57. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/sync_version/index.rst +0 -0
  58. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/types.rst +0 -0
  59. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/util.rst +0 -0
  60. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/anonymous_bot.py +0 -0
  61. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/callback_data_examples/advanced_calendar_example/filters.py +0 -0
  62. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/callback_data_examples/advanced_calendar_example/keyboards.py +0 -0
  63. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/callback_data_examples/advanced_calendar_example/main.py +0 -0
  64. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/callback_data_examples/simple_products_example.py +0 -0
  65. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/chat_join_request.py +0 -0
  66. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/chat_member_example.py +0 -0
  67. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/continue_handling.py +0 -0
  68. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/custom_filters/admin_filter_example.py +0 -0
  69. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/custom_filters/advanced_text_filter.py +0 -0
  70. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/custom_filters/general_custom_filters.py +0 -0
  71. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/custom_filters/id_filter_example.py +0 -0
  72. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/custom_filters/is_filter_example.py +0 -0
  73. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/custom_filters/text_filter_example.py +0 -0
  74. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/custom_states.py +0 -0
  75. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/detect_changes.py +0 -0
  76. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/download_file_example.py +0 -0
  77. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/echo_bot.py +0 -0
  78. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/exception_handler.py +0 -0
  79. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/formatting_example.py +0 -0
  80. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/message_reaction_example.py +0 -0
  81. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/flooding_middleware.py +0 -0
  82. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/i18n.py +0 -0
  83. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/i18n_base_midddleware.py +0 -0
  84. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/keyboards.py +0 -0
  85. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/locales/en/LC_MESSAGES/messages.po +0 -0
  86. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/locales/ru/LC_MESSAGES/messages.po +0 -0
  87. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/locales/uz_Latn/LC_MESSAGES/messages.po +0 -0
  88. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/main.py +0 -0
  89. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/mini_app.py +0 -0
  90. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/multibot/README.MD +0 -0
  91. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/multibot/config.py +0 -0
  92. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/multibot/handlers.py +0 -0
  93. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/multibot/main.py +0 -0
  94. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/multibot/nginx_conf.conf +0 -0
  95. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/register_handler.py +0 -0
  96. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/send_file_example.py +0 -0
  97. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/set_command_example.py +0 -0
  98. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/skip_updates_example.py +0 -0
  99. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/timer_bot_async.py +0 -0
  100. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/update_listener.py +0 -0
  101. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/webhooks/async_webhook_aiohttp_echo_bot.py +0 -0
  102. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/webhooks/run_webhooks.py +0 -0
  103. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/webhooks/webhook_starlette_echo_bot.py +0 -0
  104. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/callback_data_examples/advanced_calendar_example/filters.py +0 -0
  105. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/callback_data_examples/advanced_calendar_example/keyboards.py +0 -0
  106. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/callback_data_examples/advanced_calendar_example/main.py +0 -0
  107. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/callback_data_examples/simple_products_example.py +0 -0
  108. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/chat_join_request.py +0 -0
  109. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/chat_member_example.py +0 -0
  110. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/continue_handling.py +0 -0
  111. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/create_invite_link.py +0 -0
  112. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/custom_filters/admin_filter_example.py +0 -0
  113. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/custom_filters/advanced_text_filter.py +0 -0
  114. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/custom_filters/general_custom_filters.py +0 -0
  115. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/custom_filters/id_filter_example.py +0 -0
  116. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/custom_filters/is_filter_example.py +0 -0
  117. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/custom_filters/text_filter_example.py +0 -0
  118. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/custom_states.py +0 -0
  119. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/deep_linking.py +0 -0
  120. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/detailed_example/detailed_example.py +0 -0
  121. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/detailed_example/kitten.jpg +0 -0
  122. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/detailed_example/rooster.jpg +0 -0
  123. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/detect_changes.py +0 -0
  124. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/download_file_example.py +0 -0
  125. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/echo_bot.py +0 -0
  126. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/formatting_example.py +0 -0
  127. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/inline_example.py +0 -0
  128. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/inline_keyboard_example.py +0 -0
  129. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/message_reaction_example.py +0 -0
  130. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/README.md +0 -0
  131. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/antiflood_middleware.py +0 -0
  132. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/basic_example.py +0 -0
  133. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/i18n_middleware/i18n_base_middleware.py +0 -0
  134. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/i18n_middleware/keyboards.py +0 -0
  135. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/i18n_middleware/locales/en/LC_MESSAGES/messages.po +0 -0
  136. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/i18n_middleware/locales/ru/LC_MESSAGES/messages.po +0 -0
  137. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/i18n_middleware/locales/uz_Latn/LC_MESSAGES/messages.po +0 -0
  138. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/i18n_middleware/main.py +0 -0
  139. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/i18n.py +0 -0
  140. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/i18n_gettext/i18n_class.py +0 -0
  141. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/i18n_gettext/keyboards.py +0 -0
  142. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/i18n_gettext/locales/en/LC_MESSAGES/messages.po +0 -0
  143. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/i18n_gettext/locales/ru/LC_MESSAGES/messages.po +0 -0
  144. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/i18n_gettext/locales/uz_Latn/LC_MESSAGES/messages.po +0 -0
  145. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/i18n_gettext/main.py +0 -0
  146. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/session.py +0 -0
  147. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/mini_app.py +0 -0
  148. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/mini_app_web/index.html +0 -0
  149. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/mini_app_web/script.js +0 -0
  150. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/mini_app_web/style.css +0 -0
  151. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/multibot/README.MD +0 -0
  152. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/multibot/config.py +0 -0
  153. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/multibot/handlers.py +0 -0
  154. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/multibot/main.py +0 -0
  155. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/multibot/nginx_conf.conf +0 -0
  156. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/payments_example.py +0 -0
  157. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/poll_example.py +0 -0
  158. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/register_handler.py +0 -0
  159. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/reply_keyboard_markup_example.py +0 -0
  160. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/serverless/aws_lambda_function.py +0 -0
  161. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/serverless/azure_functions +0 -0
  162. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/serverless/flask_google_cloud_bot/.gcloudignore +0 -0
  163. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/serverless/flask_google_cloud_bot/app.yaml +0 -0
  164. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/serverless/flask_google_cloud_bot/main.py +0 -0
  165. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/set_command_example.py +0 -0
  166. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/skip_updates_example.py +0 -0
  167. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/step_example.py +0 -0
  168. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/telebot_bot/telebot_bot.py +0 -0
  169. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/timer_bot.py +0 -0
  170. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/README.md +0 -0
  171. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/run_webhooks.py +0 -0
  172. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_aiohttp_echo_bot.py +0 -0
  173. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_cherrypy_echo_bot.py +0 -0
  174. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_cpython_echo_bot.py +0 -0
  175. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_fastapi_echo_bot.py +0 -0
  176. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_flask_echo_bot.py +0 -0
  177. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_flask_heroku_echo.py +0 -0
  178. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_tornado_echo_bot.py +0 -0
  179. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_twisted_echo_bot.py +0 -0
  180. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_handler_backends.py +0 -0
  181. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_storage/__init__.py +0 -0
  182. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_storage/memory_storage.py +0 -0
  183. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_storage/pickle_storage.py +0 -0
  184. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_storage/redis_storage.py +0 -0
  185. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/callback_data.py +0 -0
  186. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/custom_filters.py +0 -0
  187. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/ext/__init__.py +0 -0
  188. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/ext/aio/__init__.py +0 -0
  189. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/ext/aio/webhooks.py +0 -0
  190. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/ext/reloader.py +0 -0
  191. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/ext/sync/__init__.py +0 -0
  192. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/ext/sync/webhooks.py +0 -0
  193. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/handler_backends.py +0 -0
  194. /pytelegrambotapi-4.26.0/tests/__init__.py → /pytelegrambotapi-4.28.0/telebot/py.typed +0 -0
  195. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/service_utils.py +0 -0
  196. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/states/__init__.py +0 -0
  197. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/states/asyncio/__init__.py +0 -0
  198. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/states/asyncio/middleware.py +0 -0
  199. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/states/sync/__init__.py +0 -0
  200. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/states/sync/context.py +0 -0
  201. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/states/sync/middleware.py +0 -0
  202. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/storage/__init__.py +0 -0
  203. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/storage/memory_storage.py +0 -0
  204. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/storage/pickle_storage.py +0 -0
  205. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/storage/redis_storage.py +0 -0
  206. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/tests/test_data/record.mp3 +0 -0
  207. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/tests/test_data/record.ogg +0 -0
  208. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/tests/test_data/record.wav +0 -0
  209. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/tests/test_data/test_video.mp4 +0 -0
  210. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/tests/test_handler_backends.py +0 -0
  211. {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/tests/test_types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyTelegramBotAPI
3
- Version: 4.26.0
3
+ Version: 4.28.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,9 +20,10 @@ Classifier: Programming Language :: Python :: 3.11
20
20
  Classifier: Programming Language :: Python :: 3.12
21
21
  Classifier: Programming Language :: Python :: 3.13
22
22
  Requires-Python: >=3.9
23
+ Requires-Dist: aiohttp
24
+ Requires-Dist: pytest
23
25
  Requires-Dist: requests
24
- Provides-Extra: aiohttp
25
- Requires-Dist: aiohttp; extra == 'aiohttp'
26
+ Requires-Dist: wheel
26
27
  Provides-Extra: coloredlogs
27
28
  Requires-Dist: coloredlogs; extra == 'coloredlogs'
28
29
  Provides-Extra: fastapi
@@ -53,7 +54,7 @@ Description-Content-Type: text/markdown
53
54
  <p align="center">A simple, but extensible Python implementation for the <a href="https://core.telegram.org/bots/api">Telegram Bot API</a>.</p>
54
55
  <p align="center">Both synchronous and asynchronous.</p>
55
56
 
56
- ## <p align="center">Supported Bot API version: <a href="https://core.telegram.org/bots/api#january-1-2025"><img src="https://img.shields.io/badge/Bot%20API-8.2-blue?logo=telegram" alt="Supported Bot API version"></a>
57
+ ## <p align="center">Supported Bot API version: <a href="https://core.telegram.org/bots/api#july-3-2025"><img src="https://img.shields.io/badge/Bot%20API-9.1-blue?logo=telegram" alt="Supported Bot API version"></a>
57
58
 
58
59
  <h2><a href='https://pytba.readthedocs.io/en/latest/index.html'>Official documentation</a></h2>
59
60
  <h2><a href='https://pytba.readthedocs.io/ru/latest/index.html'>Official ru documentation</a></h2>
@@ -934,5 +935,6 @@ Here are some examples of template:
934
935
  * [4K YouTube Downloader](https://github.com/hansanaD/TelegramYTDLBot/) - Youtube Downloader with upto 4K resolution support.
935
936
  * [DrinkGenius-Bot](https://t.me/cocktail_recommendation_bot) ([source](https://github.com/Povladarchik/DrinkGenius-Bot)) by [Povladarchik](https://github.com/Povladarchik). Your personal assistant in the world of cocktails.
936
937
  * [Pytgpt-Bot](https://t.me/pytgpt_bot) ([source](https://github.com/Simatwa/pytgpt-bot)) by [Smartwa](https://github.com/Simatwa). AI powered bot for chatting, text-to-image and text-to-speech conversions.
938
+ * [BetterForward](https://github.com/SideCloudGroup/BetterForward) by [SideCloud](https://github.com/SideCloudGroup). Probably the most reliable Message Forwarding Bot in Telegram via the Topic feature.
937
939
 
938
940
  **Want to have your bot listed here? Just make a pull request. Only bots with public source code are accepted.**
@@ -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#january-1-2025"><img src="https://img.shields.io/badge/Bot%20API-8.2-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#july-3-2025"><img src="https://img.shields.io/badge/Bot%20API-9.1-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>
@@ -891,5 +891,6 @@ Here are some examples of template:
891
891
  * [4K YouTube Downloader](https://github.com/hansanaD/TelegramYTDLBot/) - Youtube Downloader with upto 4K resolution support.
892
892
  * [DrinkGenius-Bot](https://t.me/cocktail_recommendation_bot) ([source](https://github.com/Povladarchik/DrinkGenius-Bot)) by [Povladarchik](https://github.com/Povladarchik). Your personal assistant in the world of cocktails.
893
893
  * [Pytgpt-Bot](https://t.me/pytgpt_bot) ([source](https://github.com/Simatwa/pytgpt-bot)) by [Smartwa](https://github.com/Simatwa). AI powered bot for chatting, text-to-image and text-to-speech conversions.
894
+ * [BetterForward](https://github.com/SideCloudGroup/BetterForward) by [SideCloud](https://github.com/SideCloudGroup). Probably the most reliable Message Forwarding Bot in Telegram via the Topic feature.
894
895
 
895
896
  **Want to have your bot listed here? Just make a pull request. Only bots with public source code are accepted.**
@@ -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.26.0'
25
+ release = '4.28.0'
26
26
 
27
27
 
28
28
  # -- General configuration ---------------------------------------------------
@@ -1,4 +1,4 @@
1
1
  pyTelegramBotAPI==4.11.0
2
2
  Flask==3.0.0
3
- gunicorn==22.0.0
3
+ gunicorn==23.0.0
4
4
  Werkzeug==3.0.6
@@ -0,0 +1,64 @@
1
+ # Import required libraries
2
+ import telebot
3
+ from telebot import types
4
+
5
+ bot = telebot.TeleBot('TOKEN')
6
+
7
+ # Product prices in stars
8
+ PRICES = {
9
+ '10 Stars': 10, # $1.00 - Entry level package
10
+ '50 Stars': 45, # $4.50 - Medium package with 10% discount
11
+ '100 Stars': 80, # $8.00 - Large package with 20% discount
12
+ '500 Stars': 350 # $35.00 - Bulk package with 30% discount
13
+ }
14
+
15
+ # Handler for /start command - Then the bot will send amount stars to purchase
16
+ @bot.message_handler(commands=['start'])
17
+ def send_welcome(message):
18
+ # Create a custom keyboard with 2 buttons per row
19
+ markup = types.ReplyKeyboardMarkup(row_width=2)
20
+ # Generate buttons for each product in our PRICES dictionary
21
+ buttons = [types.KeyboardButton(product) for product in PRICES.keys()]
22
+ # Add all buttons to the markup
23
+ markup.add(*buttons)
24
+
25
+ # Send welcome message with the custom keyboard
26
+ bot.reply_to(message,
27
+ "Welcome to Stars Payment Bot!\nPlease select amount of stars to purchase:",
28
+ reply_markup=markup)
29
+
30
+ # Handler for when user selects a product from the keyboard
31
+ @bot.message_handler(func=lambda message: message.text in PRICES.keys())
32
+ def handle_product_selection(message):
33
+ # Get selected product and its price
34
+ product = message.text
35
+ price = PRICES[product]
36
+
37
+ # Create invoice with product details
38
+ prices = [types.LabeledPrice(label=product, amount=price)]
39
+
40
+ # Send payment invoice to user
41
+ bot.send_invoice(
42
+ message.chat.id, # Chat ID to send invoice to
43
+ title=f"Purchase {product}", # Title of the invoice
44
+ description=f"Buy {product} for your account", # Description shown on invoice
45
+ provider_token='', # Payment provider token (empty for testing)
46
+ currency='XTR', # Currency code
47
+ prices=prices, # List of prices (we only have one item)
48
+ start_parameter='stars-payment', # Deep-linking parameter
49
+ invoice_payload=product # Payload to identify the product after payment
50
+ )
51
+
52
+ # Pre-checkout handler - Called before payment is completed
53
+ @bot.pre_checkout_query_handler(func=lambda query: True)
54
+ def process_pre_checkout_query(pre_checkout_query):
55
+ bot.answer_pre_checkout_query(pre_checkout_query.id, ok=True)
56
+
57
+ # Handler for successful payments
58
+ @bot.message_handler(content_types=['successful_payment'])
59
+ def handle_successful_payment(message):
60
+ # Get the product that was purchased from the invoice payload
61
+ product = message.successful_payment.invoice_payload
62
+ bot.reply_to(message,
63
+ f"Payment for {product} successful!")
64
+ bot.polling()
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pyTelegramBotAPI"
7
- version = "4.26.0"
7
+ version = "4.28.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 = ["pytest", "requests", "wheel", "aiohttp"]
26
26
 
27
27
  [project.urls]
28
28
  Homepage = "https://github.com/eternnoir/pyTelegramBotAPI"
@@ -35,7 +35,6 @@ Issues = "https://github.com/eternnoir/pyTelegramBotAPI/issues"
35
35
  json = ["ujson"]
36
36
  PIL = ["Pillow"]
37
37
  redis = ["redis>=3.4.1"]
38
- aiohttp = ["aiohttp"]
39
38
  fastapi = ["fastapi"]
40
39
  uvicorn = ["uvicorn"]
41
40
  psutil = ["psutil"]
@@ -1,4 +1,4 @@
1
1
  pytest
2
- requests==2.32.0
2
+ requests==2.32.4
3
3
  wheel==0.38.1
4
4
  aiohttp==3.10.11