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