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.
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/PKG-INFO +6 -4
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/README.md +2 -1
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/conf.py +1 -1
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/serverless/flask_google_cloud_bot/requirements.txt +1 -1
- pytelegrambotapi-4.28.0/examples/stars_payment.py +64 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/pyproject.toml +2 -3
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/requirements.txt +1 -1
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/__init__.py +655 -34
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/apihelper.py +230 -4
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/async_telebot.py +653 -34
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_filters.py +1 -1
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_helper.py +227 -5
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_storage/base_storage.py +30 -6
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/formatting.py +9 -4
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/states/asyncio/context.py +2 -2
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/storage/base_storage.py +30 -6
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/types.py +1600 -33
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/util.py +3 -2
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/version.py +1 -1
- pytelegrambotapi-4.28.0/tests/__init__.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/tests/test_telebot.py +51 -30
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/.github/ISSUE_TEMPLATE +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/.github/workflows/setup_python.yml +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/.gitignore +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/.readthedocs.yml +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/.travis.yml +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/LICENSE +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/doc_req.txt +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/Makefile +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/_static/logo.png +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/_static/logo2.png +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/async_version/index.rst +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/calldata.rst +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/formatting.rst +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/index.rst +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/install.rst +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/async_version.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/calldata.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/formatting.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/index.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/install.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/quick_start.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/sync_version.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/types.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/en/LC_MESSAGES/util.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/async_version.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/calldata.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/formatting.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/index.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/install.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/quick_start.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/sync_version.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/types.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/locales/ru/LC_MESSAGES/util.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/quick_start.rst +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/sync_version/index.rst +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/types.rst +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/docs/source/util.rst +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/anonymous_bot.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/callback_data_examples/advanced_calendar_example/filters.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/callback_data_examples/advanced_calendar_example/keyboards.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/callback_data_examples/advanced_calendar_example/main.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/callback_data_examples/simple_products_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/chat_join_request.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/chat_member_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/continue_handling.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/custom_filters/admin_filter_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/custom_filters/advanced_text_filter.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/custom_filters/general_custom_filters.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/custom_filters/id_filter_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/custom_filters/is_filter_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/custom_filters/text_filter_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/custom_states.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/detect_changes.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/download_file_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/echo_bot.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/exception_handler.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/formatting_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/message_reaction_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/flooding_middleware.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/i18n.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/i18n_base_midddleware.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/keyboards.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/locales/en/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/locales/ru/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/locales/uz_Latn/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/main.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/mini_app.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/multibot/README.MD +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/multibot/config.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/multibot/handlers.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/multibot/main.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/multibot/nginx_conf.conf +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/register_handler.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/send_file_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/set_command_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/skip_updates_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/timer_bot_async.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/update_listener.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/webhooks/async_webhook_aiohttp_echo_bot.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/webhooks/run_webhooks.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/asynchronous_telebot/webhooks/webhook_starlette_echo_bot.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/callback_data_examples/advanced_calendar_example/filters.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/callback_data_examples/advanced_calendar_example/keyboards.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/callback_data_examples/advanced_calendar_example/main.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/callback_data_examples/simple_products_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/chat_join_request.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/chat_member_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/continue_handling.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/create_invite_link.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/custom_filters/admin_filter_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/custom_filters/advanced_text_filter.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/custom_filters/general_custom_filters.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/custom_filters/id_filter_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/custom_filters/is_filter_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/custom_filters/text_filter_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/custom_states.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/deep_linking.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/detailed_example/detailed_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/detailed_example/kitten.jpg +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/detailed_example/rooster.jpg +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/detect_changes.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/download_file_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/echo_bot.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/formatting_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/inline_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/inline_keyboard_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/message_reaction_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/README.md +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/antiflood_middleware.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/basic_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/i18n_middleware/i18n_base_middleware.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/i18n_middleware/keyboards.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/i18n_middleware/locales/en/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/i18n_middleware/locales/ru/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/i18n_middleware/locales/uz_Latn/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/class_based/i18n_middleware/main.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/i18n.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/i18n_gettext/i18n_class.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/i18n_gettext/keyboards.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/i18n_gettext/locales/en/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/i18n_gettext/locales/ru/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/i18n_gettext/locales/uz_Latn/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/i18n_gettext/main.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/middleware/function_based/session.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/mini_app.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/mini_app_web/index.html +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/mini_app_web/script.js +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/mini_app_web/style.css +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/multibot/README.MD +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/multibot/config.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/multibot/handlers.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/multibot/main.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/multibot/nginx_conf.conf +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/payments_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/poll_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/register_handler.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/reply_keyboard_markup_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/serverless/aws_lambda_function.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/serverless/azure_functions +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/serverless/flask_google_cloud_bot/.gcloudignore +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/serverless/flask_google_cloud_bot/app.yaml +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/serverless/flask_google_cloud_bot/main.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/set_command_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/skip_updates_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/step_example.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/telebot_bot/telebot_bot.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/timer_bot.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/README.md +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/run_webhooks.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_aiohttp_echo_bot.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_cherrypy_echo_bot.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_cpython_echo_bot.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_fastapi_echo_bot.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_flask_echo_bot.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_flask_heroku_echo.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_tornado_echo_bot.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/examples/webhook_examples/webhook_twisted_echo_bot.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_handler_backends.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_storage/__init__.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_storage/memory_storage.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_storage/pickle_storage.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/asyncio_storage/redis_storage.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/callback_data.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/custom_filters.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/ext/__init__.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/ext/aio/__init__.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/ext/aio/webhooks.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/ext/reloader.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/ext/sync/__init__.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/ext/sync/webhooks.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/handler_backends.py +0 -0
- /pytelegrambotapi-4.26.0/tests/__init__.py → /pytelegrambotapi-4.28.0/telebot/py.typed +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/service_utils.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/states/__init__.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/states/asyncio/__init__.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/states/asyncio/middleware.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/states/sync/__init__.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/states/sync/context.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/states/sync/middleware.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/storage/__init__.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/storage/memory_storage.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/storage/pickle_storage.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/telebot/storage/redis_storage.py +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/tests/test_data/record.mp3 +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/tests/test_data/record.ogg +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/tests/test_data/record.wav +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/tests/test_data/test_video.mp4 +0 -0
- {pytelegrambotapi-4.26.0 → pytelegrambotapi-4.28.0}/tests/test_handler_backends.py +0 -0
- {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.
|
|
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
|
-
|
|
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#
|
|
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#
|
|
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.
|
|
25
|
+
release = '4.28.0'
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
# -- General configuration ---------------------------------------------------
|
|
@@ -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.
|
|
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"]
|