pyTelegramBotAPI 4.24.0__tar.gz → 4.29.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.
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/PKG-INFO +7 -7
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/README.md +3 -2
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/conf.py +1 -1
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/serverless/flask_google_cloud_bot/requirements.txt +4 -4
- pytelegrambotapi-4.29.0/examples/stars_payment.py +64 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/pyproject.toml +2 -3
- pytelegrambotapi-4.29.0/requirements.txt +4 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/__init__.py +1502 -408
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/apihelper.py +431 -22
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/async_telebot.py +1674 -573
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/asyncio_filters.py +1 -1
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/asyncio_helper.py +420 -22
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/asyncio_storage/base_storage.py +30 -6
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/formatting.py +10 -5
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/states/asyncio/context.py +2 -2
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/storage/base_storage.py +30 -6
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/types.py +2785 -520
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/util.py +16 -12
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/version.py +1 -1
- pytelegrambotapi-4.29.0/tests/__init__.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/tests/test_telebot.py +51 -30
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/tests/test_types.py +2 -4
- pytelegrambotapi-4.24.0/requirements.txt +0 -4
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/.github/ISSUE_TEMPLATE +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/.github/workflows/setup_python.yml +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/.gitignore +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/.readthedocs.yml +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/.travis.yml +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/LICENSE +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/doc_req.txt +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/Makefile +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/_static/logo.png +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/_static/logo2.png +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/async_version/index.rst +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/calldata.rst +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/formatting.rst +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/index.rst +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/install.rst +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/en/LC_MESSAGES/async_version.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/en/LC_MESSAGES/calldata.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/en/LC_MESSAGES/formatting.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/en/LC_MESSAGES/index.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/en/LC_MESSAGES/install.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/en/LC_MESSAGES/quick_start.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/en/LC_MESSAGES/sync_version.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/en/LC_MESSAGES/types.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/en/LC_MESSAGES/util.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/ru/LC_MESSAGES/async_version.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/ru/LC_MESSAGES/calldata.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/ru/LC_MESSAGES/formatting.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/ru/LC_MESSAGES/index.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/ru/LC_MESSAGES/install.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/ru/LC_MESSAGES/quick_start.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/ru/LC_MESSAGES/sync_version.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/ru/LC_MESSAGES/types.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/locales/ru/LC_MESSAGES/util.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/quick_start.rst +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/sync_version/index.rst +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/types.rst +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/docs/source/util.rst +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/anonymous_bot.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/callback_data_examples/advanced_calendar_example/filters.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/callback_data_examples/advanced_calendar_example/keyboards.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/callback_data_examples/advanced_calendar_example/main.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/callback_data_examples/simple_products_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/chat_join_request.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/chat_member_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/continue_handling.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/custom_filters/admin_filter_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/custom_filters/advanced_text_filter.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/custom_filters/general_custom_filters.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/custom_filters/id_filter_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/custom_filters/is_filter_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/custom_filters/text_filter_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/custom_states.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/detect_changes.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/download_file_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/echo_bot.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/exception_handler.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/formatting_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/message_reaction_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/middleware/flooding_middleware.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/middleware/i18n.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/i18n_base_midddleware.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/keyboards.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/locales/en/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/locales/ru/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/locales/uz_Latn/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/main.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/mini_app.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/multibot/README.MD +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/multibot/config.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/multibot/handlers.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/multibot/main.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/multibot/nginx_conf.conf +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/register_handler.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/send_file_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/set_command_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/skip_updates_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/timer_bot_async.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/update_listener.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/webhooks/async_webhook_aiohttp_echo_bot.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/webhooks/run_webhooks.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/asynchronous_telebot/webhooks/webhook_starlette_echo_bot.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/callback_data_examples/advanced_calendar_example/filters.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/callback_data_examples/advanced_calendar_example/keyboards.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/callback_data_examples/advanced_calendar_example/main.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/callback_data_examples/simple_products_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/chat_join_request.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/chat_member_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/continue_handling.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/create_invite_link.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/custom_filters/admin_filter_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/custom_filters/advanced_text_filter.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/custom_filters/general_custom_filters.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/custom_filters/id_filter_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/custom_filters/is_filter_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/custom_filters/text_filter_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/custom_states.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/deep_linking.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/detailed_example/detailed_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/detailed_example/kitten.jpg +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/detailed_example/rooster.jpg +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/detect_changes.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/download_file_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/echo_bot.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/formatting_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/inline_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/inline_keyboard_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/message_reaction_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/README.md +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/class_based/antiflood_middleware.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/class_based/basic_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/class_based/i18n_middleware/i18n_base_middleware.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/class_based/i18n_middleware/keyboards.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/class_based/i18n_middleware/locales/en/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/class_based/i18n_middleware/locales/ru/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/class_based/i18n_middleware/locales/uz_Latn/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/class_based/i18n_middleware/main.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/function_based/i18n.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/function_based/i18n_gettext/i18n_class.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/function_based/i18n_gettext/keyboards.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/function_based/i18n_gettext/locales/en/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/function_based/i18n_gettext/locales/ru/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/function_based/i18n_gettext/locales/uz_Latn/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/function_based/i18n_gettext/main.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/middleware/function_based/session.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/mini_app.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/mini_app_web/index.html +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/mini_app_web/script.js +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/mini_app_web/style.css +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/multibot/README.MD +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/multibot/config.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/multibot/handlers.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/multibot/main.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/multibot/nginx_conf.conf +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/payments_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/poll_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/register_handler.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/reply_keyboard_markup_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/serverless/aws_lambda_function.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/serverless/azure_functions +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/serverless/flask_google_cloud_bot/.gcloudignore +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/serverless/flask_google_cloud_bot/app.yaml +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/serverless/flask_google_cloud_bot/main.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/set_command_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/skip_updates_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/step_example.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/telebot_bot/telebot_bot.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/timer_bot.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/webhook_examples/README.md +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/webhook_examples/run_webhooks.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/webhook_examples/webhook_aiohttp_echo_bot.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/webhook_examples/webhook_cherrypy_echo_bot.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/webhook_examples/webhook_cpython_echo_bot.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/webhook_examples/webhook_fastapi_echo_bot.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/webhook_examples/webhook_flask_echo_bot.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/webhook_examples/webhook_flask_heroku_echo.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/webhook_examples/webhook_tornado_echo_bot.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/examples/webhook_examples/webhook_twisted_echo_bot.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/asyncio_handler_backends.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/asyncio_storage/__init__.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/asyncio_storage/memory_storage.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/asyncio_storage/pickle_storage.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/asyncio_storage/redis_storage.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/callback_data.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/custom_filters.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/ext/__init__.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/ext/aio/__init__.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/ext/aio/webhooks.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/ext/reloader.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/ext/sync/__init__.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/ext/sync/webhooks.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/handler_backends.py +0 -0
- /pytelegrambotapi-4.24.0/tests/__init__.py → /pytelegrambotapi-4.29.0/telebot/py.typed +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/service_utils.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/states/__init__.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/states/asyncio/__init__.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/states/asyncio/middleware.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/states/sync/__init__.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/states/sync/context.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/states/sync/middleware.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/storage/__init__.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/storage/memory_storage.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/storage/pickle_storage.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/telebot/storage/redis_storage.py +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/tests/test_data/record.mp3 +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/tests/test_data/record.ogg +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/tests/test_data/record.wav +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/tests/test_data/test_video.mp4 +0 -0
- {pytelegrambotapi-4.24.0 → pytelegrambotapi-4.29.0}/tests/test_handler_backends.py +0 -0
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: pyTelegramBotAPI
|
|
3
|
-
Version: 4.
|
|
4
|
-
Summary: Python Telegram bot
|
|
3
|
+
Version: 4.29.0
|
|
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
|
|
7
7
|
Project-URL: Repository, https://github.com/eternnoir/pyTelegramBotAPI
|
|
8
8
|
Project-URL: Issues, https://github.com/eternnoir/pyTelegramBotAPI/issues
|
|
9
9
|
Author-email: eternnoir <eternnoir@gmail.com>
|
|
10
10
|
License: GPL2
|
|
11
|
+
License-File: LICENSE
|
|
11
12
|
Keywords: api,bot,telegram,tools
|
|
12
13
|
Classifier: Development Status :: 5 - Production/Stable
|
|
13
14
|
Classifier: Environment :: Console
|
|
@@ -20,8 +21,6 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
20
21
|
Classifier: Programming Language :: Python :: 3.13
|
|
21
22
|
Requires-Python: >=3.9
|
|
22
23
|
Requires-Dist: requests
|
|
23
|
-
Provides-Extra: aiohttp
|
|
24
|
-
Requires-Dist: aiohttp; extra == 'aiohttp'
|
|
25
24
|
Provides-Extra: coloredlogs
|
|
26
25
|
Requires-Dist: coloredlogs; extra == 'coloredlogs'
|
|
27
26
|
Provides-Extra: fastapi
|
|
@@ -52,7 +51,7 @@ Description-Content-Type: text/markdown
|
|
|
52
51
|
<p align="center">A simple, but extensible Python implementation for the <a href="https://core.telegram.org/bots/api">Telegram Bot API</a>.</p>
|
|
53
52
|
<p align="center">Both synchronous and asynchronous.</p>
|
|
54
53
|
|
|
55
|
-
## <p align="center">Supported Bot API version: <a href="https://core.telegram.org/bots/api#
|
|
54
|
+
## <p align="center">Supported Bot API version: <a href="https://core.telegram.org/bots/api#august-15-2025"><img src="https://img.shields.io/badge/Bot%20API-9.2-blue?logo=telegram" alt="Supported Bot API version"></a>
|
|
56
55
|
|
|
57
56
|
<h2><a href='https://pytba.readthedocs.io/en/latest/index.html'>Official documentation</a></h2>
|
|
58
57
|
<h2><a href='https://pytba.readthedocs.io/ru/latest/index.html'>Official ru documentation</a></h2>
|
|
@@ -872,7 +871,7 @@ Here are some examples of template:
|
|
|
872
871
|
* [RadRetroRobot](https://github.com/Tronikart/RadRetroRobot) by *Tronikart* - Multifunctional Telegram Bot RadRetroRobot.
|
|
873
872
|
* [League of Legends bot](https://telegram.me/League_of_Legends_bot) ([source](https://github.com/i32ropie/lol)) by *i32ropie*
|
|
874
873
|
* [NeoBot](https://github.com/neoranger/NeoBot) by [@NeoRanger](https://github.com/neoranger)
|
|
875
|
-
* [ColorCodeBot](https://t.me/colorcodebot) ([source](https://github.com/andydecleyre/colorcodebot)) - Share code snippets as beautifully syntax-highlighted
|
|
874
|
+
* [ColorCodeBot](https://t.me/colorcodebot) ([source](https://github.com/andydecleyre/colorcodebot)) - Share code snippets as beautifully syntax-highlighted images.
|
|
876
875
|
* [ComedoresUGRbot](http://telegram.me/ComedoresUGRbot) ([source](https://github.com/alejandrocq/ComedoresUGRbot)) by [*alejandrocq*](https://github.com/alejandrocq) - Telegram bot to check the menu of Universidad de Granada dining hall.
|
|
877
876
|
* [proxybot](https://github.com/p-hash/proxybot) - Simple Proxy Bot for Telegram. by p-hash
|
|
878
877
|
* [DonantesMalagaBot](https://github.com/vfranch/DonantesMalagaBot) - DonantesMalagaBot facilitates information to Malaga blood donors about the places where they can donate today or in the incoming days. It also records the date of the last donation so that it helps the donors to know when they can donate again. - by vfranch
|
|
@@ -933,5 +932,6 @@ Here are some examples of template:
|
|
|
933
932
|
* [4K YouTube Downloader](https://github.com/hansanaD/TelegramYTDLBot/) - Youtube Downloader with upto 4K resolution support.
|
|
934
933
|
* [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.
|
|
935
934
|
* [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.
|
|
935
|
+
* [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.
|
|
936
936
|
|
|
937
937
|
**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#
|
|
13
|
+
## <p align="center">Supported Bot API version: <a href="https://core.telegram.org/bots/api#august-15-2025"><img src="https://img.shields.io/badge/Bot%20API-9.2-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>
|
|
@@ -830,7 +830,7 @@ Here are some examples of template:
|
|
|
830
830
|
* [RadRetroRobot](https://github.com/Tronikart/RadRetroRobot) by *Tronikart* - Multifunctional Telegram Bot RadRetroRobot.
|
|
831
831
|
* [League of Legends bot](https://telegram.me/League_of_Legends_bot) ([source](https://github.com/i32ropie/lol)) by *i32ropie*
|
|
832
832
|
* [NeoBot](https://github.com/neoranger/NeoBot) by [@NeoRanger](https://github.com/neoranger)
|
|
833
|
-
* [ColorCodeBot](https://t.me/colorcodebot) ([source](https://github.com/andydecleyre/colorcodebot)) - Share code snippets as beautifully syntax-highlighted
|
|
833
|
+
* [ColorCodeBot](https://t.me/colorcodebot) ([source](https://github.com/andydecleyre/colorcodebot)) - Share code snippets as beautifully syntax-highlighted images.
|
|
834
834
|
* [ComedoresUGRbot](http://telegram.me/ComedoresUGRbot) ([source](https://github.com/alejandrocq/ComedoresUGRbot)) by [*alejandrocq*](https://github.com/alejandrocq) - Telegram bot to check the menu of Universidad de Granada dining hall.
|
|
835
835
|
* [proxybot](https://github.com/p-hash/proxybot) - Simple Proxy Bot for Telegram. by p-hash
|
|
836
836
|
* [DonantesMalagaBot](https://github.com/vfranch/DonantesMalagaBot) - DonantesMalagaBot facilitates information to Malaga blood donors about the places where they can donate today or in the incoming days. It also records the date of the last donation so that it helps the donors to know when they can donate again. - by vfranch
|
|
@@ -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.
|
|
25
|
+
release = '4.29.0'
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
# -- General configuration ---------------------------------------------------
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
pyTelegramBotAPI==4.11.0
|
|
2
|
-
Flask==3.0.0
|
|
3
|
-
gunicorn==
|
|
4
|
-
Werkzeug==3.0.
|
|
1
|
+
pyTelegramBotAPI==4.11.0
|
|
2
|
+
Flask==3.0.0
|
|
3
|
+
gunicorn==23.0.0
|
|
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,8 +4,8 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyTelegramBotAPI"
|
|
7
|
-
version = "4.
|
|
8
|
-
description = "Python Telegram bot
|
|
7
|
+
version = "4.29.0"
|
|
8
|
+
description = "Python Telegram bot API."
|
|
9
9
|
authors = [{name = "eternnoir", email = "eternnoir@gmail.com"}]
|
|
10
10
|
license = {text = "GPL2"}
|
|
11
11
|
readme = "README.md"
|
|
@@ -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"]
|