pyTelegramBotAPI 4.16.1__tar.gz → 4.18.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.16.1 → pytelegrambotapi-4.18.0}/PKG-INFO +6 -4
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/README.md +4 -2
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/conf.py +72 -72
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/echo_bot.py +25 -27
- pytelegrambotapi-4.18.0/examples/asynchronous_telebot/message_reaction_example.py +35 -0
- pytelegrambotapi-4.18.0/examples/message_reaction_example.py +33 -0
- pytelegrambotapi-4.18.0/examples/serverless/flask_google_cloud_bot/.gcloudignore +1 -0
- pytelegrambotapi-4.18.0/examples/serverless/flask_google_cloud_bot/app.yaml +4 -0
- pytelegrambotapi-4.18.0/examples/serverless/flask_google_cloud_bot/main.py +65 -0
- pytelegrambotapi-4.18.0/examples/serverless/flask_google_cloud_bot/requirements.txt +4 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/pyproject.toml +1 -1
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/requirements.txt +1 -1
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/__init__.py +655 -74
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/apihelper.py +98 -67
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/async_telebot.py +640 -66
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/asyncio_filters.py +454 -454
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/asyncio_handler_backends.py +1 -1
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/asyncio_helper.py +83 -59
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/custom_filters.py +464 -462
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/formatting.py +107 -6
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/handler_backends.py +1 -1
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/types.py +956 -259
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/util.py +1 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/version.py +1 -1
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/tests/test_handler_backends.py +2 -2
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/tests/test_types.py +11 -1
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/.github/ISSUE_TEMPLATE +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/.github/workflows/setup_python.yml +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/.gitignore +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/.readthedocs.yml +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/.travis.yml +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/LICENSE +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/doc_req.txt +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/Makefile +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/_static/logo.png +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/_static/logo2.png +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/async_version/index.rst +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/calldata.rst +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/formatting.rst +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/index.rst +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/install.rst +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/en/LC_MESSAGES/async_version.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/en/LC_MESSAGES/calldata.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/en/LC_MESSAGES/formatting.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/en/LC_MESSAGES/index.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/en/LC_MESSAGES/install.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/en/LC_MESSAGES/quick_start.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/en/LC_MESSAGES/sync_version.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/en/LC_MESSAGES/types.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/en/LC_MESSAGES/util.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/ru/LC_MESSAGES/async_version.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/ru/LC_MESSAGES/calldata.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/ru/LC_MESSAGES/formatting.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/ru/LC_MESSAGES/index.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/ru/LC_MESSAGES/install.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/ru/LC_MESSAGES/quick_start.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/ru/LC_MESSAGES/sync_version.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/ru/LC_MESSAGES/types.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/locales/ru/LC_MESSAGES/util.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/quick_start.rst +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/sync_version/index.rst +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/types.rst +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/docs/source/util.rst +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/anonymous_bot.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/callback_data_examples/advanced_calendar_example/filters.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/callback_data_examples/advanced_calendar_example/keyboards.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/callback_data_examples/advanced_calendar_example/main.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/callback_data_examples/simple_products_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/chat_join_request.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/chat_member_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/continue_handling.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/custom_filters/admin_filter_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/custom_filters/advanced_text_filter.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/custom_filters/general_custom_filters.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/custom_filters/id_filter_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/custom_filters/is_filter_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/custom_filters/text_filter_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/custom_states.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/detect_changes.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/download_file_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/exception_handler.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/formatting_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/middleware/flooding_middleware.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/middleware/i18n.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/i18n_base_midddleware.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/keyboards.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/locales/en/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/locales/ru/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/locales/uz_Latn/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/middleware/i18n_middleware_example/main.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/multibot/README.MD +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/multibot/config.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/multibot/handlers.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/multibot/main.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/multibot/nginx_conf.conf +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/register_handler.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/send_file_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/set_command_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/skip_updates_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/timer_bot_async.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/update_listener.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/webhooks/async_webhook_aiohttp_echo_bot.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/webhooks/run_webhooks.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/webhooks/webhook_starlette_echo_bot.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/callback_data_examples/advanced_calendar_example/filters.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/callback_data_examples/advanced_calendar_example/keyboards.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/callback_data_examples/advanced_calendar_example/main.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/callback_data_examples/simple_products_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/chat_join_request.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/chat_member_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/continue_handling.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/create_invite_link.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/custom_filters/admin_filter_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/custom_filters/advanced_text_filter.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/custom_filters/general_custom_filters.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/custom_filters/id_filter_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/custom_filters/is_filter_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/custom_filters/text_filter_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/custom_states.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/deep_linking.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/detailed_example/detailed_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/detailed_example/kitten.jpg +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/detailed_example/rooster.jpg +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/detect_changes.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/download_file_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/echo_bot.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/formatting_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/inline_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/inline_keyboard_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/README.md +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/class_based/antiflood_middleware.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/class_based/basic_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/class_based/i18n_middleware/i18n_base_middleware.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/class_based/i18n_middleware/keyboards.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/class_based/i18n_middleware/locales/en/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/class_based/i18n_middleware/locales/ru/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/class_based/i18n_middleware/locales/uz_Latn/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/class_based/i18n_middleware/main.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/function_based/i18n.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/function_based/i18n_gettext/i18n_class.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/function_based/i18n_gettext/keyboards.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/function_based/i18n_gettext/locales/en/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/function_based/i18n_gettext/locales/ru/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/function_based/i18n_gettext/locales/uz_Latn/LC_MESSAGES/messages.po +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/function_based/i18n_gettext/main.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/middleware/function_based/session.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/multibot/README.MD +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/multibot/config.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/multibot/handlers.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/multibot/main.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/multibot/nginx_conf.conf +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/payments_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/poll_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/register_handler.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/reply_keyboard_markup_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/serverless/aws_lambda_function.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/serverless/azure_functions +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/set_command_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/skip_updates_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/step_example.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/telebot_bot/telebot_bot.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/timer_bot.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/webhook_examples/README.md +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/webhook_examples/run_webhooks.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/webhook_examples/webhook_aiohttp_echo_bot.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/webhook_examples/webhook_cherrypy_echo_bot.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/webhook_examples/webhook_cpython_echo_bot.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/webhook_examples/webhook_fastapi_echo_bot.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/webhook_examples/webhook_flask_echo_bot.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/webhook_examples/webhook_flask_heroku_echo.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/webhook_examples/webhook_tornado_echo_bot.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/webhook_examples/webhook_twisted_echo_bot.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/asyncio_storage/__init__.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/asyncio_storage/base_storage.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/asyncio_storage/memory_storage.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/asyncio_storage/pickle_storage.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/asyncio_storage/redis_storage.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/callback_data.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/ext/__init__.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/ext/aio/__init__.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/ext/aio/webhooks.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/ext/reloader.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/ext/sync/__init__.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/ext/sync/webhooks.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/service_utils.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/storage/__init__.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/storage/base_storage.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/storage/memory_storage.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/storage/pickle_storage.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/telebot/storage/redis_storage.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/tests/__init__.py +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/tests/test_data/record.mp3 +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/tests/test_data/record.ogg +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/tests/test_data/record.wav +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/tests/test_data/test_video.mp4 +0 -0
- {pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/tests/test_telebot.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: pyTelegramBotAPI
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.18.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
|
|
@@ -55,7 +55,7 @@ Description-Content-Type: text/markdown
|
|
|
55
55
|
<p align="center">A simple, but extensible Python implementation for the <a href="https://core.telegram.org/bots/api">Telegram Bot API</a>.</p>
|
|
56
56
|
<p align="center">Both synchronous and asynchronous.</p>
|
|
57
57
|
|
|
58
|
-
## <p align="center">Supported Bot API version: <a href="https://core.telegram.org/bots/api#
|
|
58
|
+
## <p align="center">Supported Bot API version: <a href="https://core.telegram.org/bots/api#march-31-2024">7.2</a>!
|
|
59
59
|
|
|
60
60
|
<h2><a href='https://pytba.readthedocs.io/en/latest/index.html'>Official documentation</a></h2>
|
|
61
61
|
<h2><a href='https://pytba.readthedocs.io/ru/latest/index.html'>Official ru documentation</a></h2>
|
|
@@ -933,6 +933,8 @@ Here are some examples of template:
|
|
|
933
933
|
* [AwesomeChatGPTBot](https://github.com/Kourva/AwesomeChatGPTBot) - Simple ChatGTP-3.5 bot. It is FREE and can remember chat history for a while With pre-defined roles!
|
|
934
934
|
* [QR-Code For You Bot](https://t.me/qrcode_for_you_bot) ([source](https://github.com/arashnm80/qrcode-for-you-bot)) by [Arashnm80](https://github.com/arashnm80). Telegram qrcode generator bot created with pyhton and telebot.
|
|
935
935
|
* [Best Instagram Downloader Bot](https://t.me/Best_Instagram_Downloader_Bot) ([source](https://github.com/arashnm80/best-instagram-downloader)) by [Arashnm80](https://github.com/arashnm80). Free and open source telegram bot to download posts and reels from Instagram.
|
|
936
|
-
* [
|
|
936
|
+
* [4K YouTube Downloader](https://github.com/hansanaD/TelegramYTDLBot/) - Youtube Downloader with upto 4K resolution support.
|
|
937
|
+
* [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.
|
|
938
|
+
* [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.
|
|
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#march-31-2024">7.2</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>
|
|
@@ -888,6 +888,8 @@ Here are some examples of template:
|
|
|
888
888
|
* [AwesomeChatGPTBot](https://github.com/Kourva/AwesomeChatGPTBot) - Simple ChatGTP-3.5 bot. It is FREE and can remember chat history for a while With pre-defined roles!
|
|
889
889
|
* [QR-Code For You Bot](https://t.me/qrcode_for_you_bot) ([source](https://github.com/arashnm80/qrcode-for-you-bot)) by [Arashnm80](https://github.com/arashnm80). Telegram qrcode generator bot created with pyhton and telebot.
|
|
890
890
|
* [Best Instagram Downloader Bot](https://t.me/Best_Instagram_Downloader_Bot) ([source](https://github.com/arashnm80/best-instagram-downloader)) by [Arashnm80](https://github.com/arashnm80). Free and open source telegram bot to download posts and reels from Instagram.
|
|
891
|
-
* [
|
|
891
|
+
* [4K YouTube Downloader](https://github.com/hansanaD/TelegramYTDLBot/) - Youtube Downloader with upto 4K resolution support.
|
|
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
|
+
* [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.
|
|
892
894
|
|
|
893
895
|
**Want to have your bot listed here? Just make a pull request. Only bots with public source code are accepted.**
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
# Configuration file for the Sphinx documentation builder.
|
|
2
|
-
#
|
|
3
|
-
# This file only contains a selection of the most common options. For a full
|
|
4
|
-
# list see the documentation:
|
|
5
|
-
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
|
6
|
-
|
|
7
|
-
# -- Path setup --------------------------------------------------------------
|
|
8
|
-
|
|
9
|
-
# If extensions (or modules to document with autodoc) are in another directory,
|
|
10
|
-
# add these directories to sys.path here. If the directory is relative to the
|
|
11
|
-
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
|
12
|
-
#
|
|
13
|
-
# import os
|
|
14
|
-
# import sys
|
|
15
|
-
# sys.path.insert(0, os.path.abspath('.'))
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
# -- Project information -----------------------------------------------------
|
|
19
|
-
|
|
20
|
-
project = 'pyTelegramBotAPI
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
# The full version, including alpha/beta/rc tags
|
|
25
|
-
release = '4.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
# -- General configuration ---------------------------------------------------
|
|
29
|
-
|
|
30
|
-
# Add any Sphinx extension module names here, as strings. They can be
|
|
31
|
-
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
|
32
|
-
# ones.
|
|
33
|
-
extensions = [
|
|
34
|
-
'sphinx.ext.autosectionlabel',
|
|
35
|
-
'sphinx.ext.autodoc',
|
|
36
|
-
"sphinx.ext.autosummary",
|
|
37
|
-
"sphinx.ext.napoleon",
|
|
38
|
-
"sphinx_copybutton",
|
|
39
|
-
|
|
40
|
-
]
|
|
41
|
-
|
|
42
|
-
# Add any paths that contain templates here, relative to this directory.
|
|
43
|
-
templates_path = ['_templates']
|
|
44
|
-
|
|
45
|
-
# List of patterns, relative to source directory, that match files and
|
|
46
|
-
# directories to ignore when looking for source files.
|
|
47
|
-
# This pattern also affects html_static_path and html_extra_path.
|
|
48
|
-
exclude_patterns = []
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
# -- Options for HTML output -------------------------------------------------
|
|
52
|
-
|
|
53
|
-
# The theme to use for HTML and HTML Help pages. See the documentation for
|
|
54
|
-
# a list of builtin themes.
|
|
55
|
-
#
|
|
56
|
-
html_theme = 'furo'
|
|
57
|
-
|
|
58
|
-
# Add any paths that contain custom static files (such as style sheets) here,
|
|
59
|
-
# relative to this directory. They are copied after the builtin static files,
|
|
60
|
-
# so a file named "default.css" will overwrite the builtin "default.css".
|
|
61
|
-
html_static_path = ['_static']
|
|
62
|
-
#html_logo = 'logo.png'
|
|
63
|
-
html_theme_options = {
|
|
64
|
-
"light_css_variables": {
|
|
65
|
-
"color-brand-primary": "#7C4DFF",
|
|
66
|
-
"color-brand-content": "#7C4DFF",
|
|
67
|
-
},
|
|
68
|
-
"light_logo": "logo.png",
|
|
69
|
-
"dark_logo": "logo2.png",
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
locale_dirs = ["locales/"]
|
|
1
|
+
# Configuration file for the Sphinx documentation builder.
|
|
2
|
+
#
|
|
3
|
+
# This file only contains a selection of the most common options. For a full
|
|
4
|
+
# list see the documentation:
|
|
5
|
+
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
|
6
|
+
|
|
7
|
+
# -- Path setup --------------------------------------------------------------
|
|
8
|
+
|
|
9
|
+
# If extensions (or modules to document with autodoc) are in another directory,
|
|
10
|
+
# add these directories to sys.path here. If the directory is relative to the
|
|
11
|
+
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
|
12
|
+
#
|
|
13
|
+
# import os
|
|
14
|
+
# import sys
|
|
15
|
+
# sys.path.insert(0, os.path.abspath('.'))
|
|
16
|
+
from datetime import datetime
|
|
17
|
+
|
|
18
|
+
# -- Project information -----------------------------------------------------
|
|
19
|
+
|
|
20
|
+
project = 'pyTelegramBotAPI'
|
|
21
|
+
author = 'coder2020official'
|
|
22
|
+
copyright = f'2022-{datetime.now().year}, {author}'
|
|
23
|
+
|
|
24
|
+
# The full version, including alpha/beta/rc tags
|
|
25
|
+
release = '4.18.0'
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# -- General configuration ---------------------------------------------------
|
|
29
|
+
|
|
30
|
+
# Add any Sphinx extension module names here, as strings. They can be
|
|
31
|
+
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
|
32
|
+
# ones.
|
|
33
|
+
extensions = [
|
|
34
|
+
'sphinx.ext.autosectionlabel',
|
|
35
|
+
'sphinx.ext.autodoc',
|
|
36
|
+
"sphinx.ext.autosummary",
|
|
37
|
+
"sphinx.ext.napoleon",
|
|
38
|
+
"sphinx_copybutton",
|
|
39
|
+
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
# Add any paths that contain templates here, relative to this directory.
|
|
43
|
+
templates_path = ['_templates']
|
|
44
|
+
|
|
45
|
+
# List of patterns, relative to source directory, that match files and
|
|
46
|
+
# directories to ignore when looking for source files.
|
|
47
|
+
# This pattern also affects html_static_path and html_extra_path.
|
|
48
|
+
exclude_patterns = []
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# -- Options for HTML output -------------------------------------------------
|
|
52
|
+
|
|
53
|
+
# The theme to use for HTML and HTML Help pages. See the documentation for
|
|
54
|
+
# a list of builtin themes.
|
|
55
|
+
#
|
|
56
|
+
html_theme = 'furo'
|
|
57
|
+
|
|
58
|
+
# Add any paths that contain custom static files (such as style sheets) here,
|
|
59
|
+
# relative to this directory. They are copied after the builtin static files,
|
|
60
|
+
# so a file named "default.css" will overwrite the builtin "default.css".
|
|
61
|
+
html_static_path = ['_static']
|
|
62
|
+
#html_logo = 'logo.png'
|
|
63
|
+
html_theme_options = {
|
|
64
|
+
"light_css_variables": {
|
|
65
|
+
"color-brand-primary": "#7C4DFF",
|
|
66
|
+
"color-brand-content": "#7C4DFF",
|
|
67
|
+
},
|
|
68
|
+
"light_logo": "logo.png",
|
|
69
|
+
"dark_logo": "logo2.png",
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
locale_dirs = ["locales/"]
|
{pytelegrambotapi-4.16.1 → pytelegrambotapi-4.18.0}/examples/asynchronous_telebot/echo_bot.py
RENAMED
|
@@ -1,27 +1,25 @@
|
|
|
1
|
-
#!/usr/bin/python
|
|
2
|
-
|
|
3
|
-
# This is a simple echo bot using the decorator mechanism.
|
|
4
|
-
# It echoes any incoming text messages.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
Hi
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
import asyncio
|
|
27
|
-
asyncio.run(bot.polling())
|
|
1
|
+
#!/usr/bin/python
|
|
2
|
+
|
|
3
|
+
# This is a simple echo bot using the decorator mechanism.
|
|
4
|
+
# It echoes any incoming text messages.
|
|
5
|
+
import asyncio
|
|
6
|
+
|
|
7
|
+
from telebot.async_telebot import AsyncTeleBot
|
|
8
|
+
|
|
9
|
+
bot = AsyncTeleBot('TOKEN')
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# Handle '/start' and '/help'
|
|
13
|
+
@bot.message_handler(commands=['help', 'start'])
|
|
14
|
+
async def send_welcome(message):
|
|
15
|
+
text = 'Hi, I am EchoBot.\nJust write me something and I will repeat it!'
|
|
16
|
+
await bot.reply_to(message, text)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# Handle all other messages with content_type 'text' (content_types defaults to ['text'])
|
|
20
|
+
@bot.message_handler(func=lambda message: True)
|
|
21
|
+
async def echo_message(message):
|
|
22
|
+
await bot.reply_to(message, message.text)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
asyncio.run(bot.polling())
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/python3
|
|
2
|
+
|
|
3
|
+
# This is a simple bot using message reactions (emoji)
|
|
4
|
+
# https://core.telegram.org/bots/api#reactiontype
|
|
5
|
+
# https://core.telegram.org/bots/api#update
|
|
6
|
+
# allowed_updates: Specify an empty list to receive all update types except, chat_member, message_reaction, and message_reaction_count.
|
|
7
|
+
# If you want to receive message_reaction events, you cannot simply leave the allowed_updates=None default value.
|
|
8
|
+
# The default list of events does not include chat_member, message_reaction, and message_reaction_count events.
|
|
9
|
+
# You must explicitly specify all the events you wish to receive and add message_reaction to this list.
|
|
10
|
+
# It’s also important to note that after using allowed_updates=[...], in the future, using allowed_updates=None will mean
|
|
11
|
+
# that the list of events you will receive will consist of the events you last explicitly specified.
|
|
12
|
+
|
|
13
|
+
import random
|
|
14
|
+
from telebot.async_telebot import AsyncTeleBot
|
|
15
|
+
from telebot.types import ReactionTypeEmoji
|
|
16
|
+
|
|
17
|
+
API_TOKEN = '<api_token>'
|
|
18
|
+
bot = AsyncTeleBot(API_TOKEN)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# Send a reactions to all messages with content_type 'text' (content_types defaults to ['text'])
|
|
23
|
+
@bot.message_handler(func=lambda message: True)
|
|
24
|
+
async def send_reaction(message):
|
|
25
|
+
emo = ["\U0001F525", "\U0001F917", "\U0001F60E"] # or use ["🔥", "🤗", "😎"]
|
|
26
|
+
await bot.set_message_reaction(message.chat.id, message.id, [ReactionTypeEmoji(random.choice(emo))], is_big=False)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@bot.message_reaction_handler(func=lambda message: True)
|
|
30
|
+
async def get_reactions(message):
|
|
31
|
+
await bot.reply_to(message, f"You changed the reaction from {[r.emoji for r in message.old_reaction]} to {[r.emoji for r in message.new_reaction]}")
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
import asyncio
|
|
35
|
+
asyncio.run(bot.infinity_polling(allowed_updates=['message', 'message_reaction']))
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/usr/bin/python3
|
|
2
|
+
|
|
3
|
+
# This is a simple bot using message reactions (emoji)
|
|
4
|
+
# https://core.telegram.org/bots/api#reactiontype
|
|
5
|
+
# https://core.telegram.org/bots/api#update
|
|
6
|
+
# allowed_updates: Specify an empty list to receive all update types except, chat_member, message_reaction, and message_reaction_count.
|
|
7
|
+
# If you want to receive message_reaction events, you cannot simply leave the allowed_updates=None default value.
|
|
8
|
+
# The default list of events does not include chat_member, message_reaction, and message_reaction_count events.
|
|
9
|
+
# You must explicitly specify all the events you wish to receive and add message_reaction to this list.
|
|
10
|
+
# It’s also important to note that after using allowed_updates=[...], in the future, using allowed_updates=None will mean
|
|
11
|
+
# that the list of events you will receive will consist of the events you last explicitly specified.
|
|
12
|
+
|
|
13
|
+
import random
|
|
14
|
+
import telebot
|
|
15
|
+
from telebot.types import ReactionTypeEmoji
|
|
16
|
+
|
|
17
|
+
API_TOKEN = '<api_token>'
|
|
18
|
+
bot = telebot.TeleBot(API_TOKEN)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
# Send a reactions to all messages with content_type 'text' (content_types defaults to ['text'])
|
|
22
|
+
@bot.message_handler(func=lambda message: True)
|
|
23
|
+
def send_reaction(message):
|
|
24
|
+
emo = ["\U0001F525", "\U0001F917", "\U0001F60E"] # or use ["🔥", "🤗", "😎"]
|
|
25
|
+
bot.set_message_reaction(message.chat.id, message.id, [ReactionTypeEmoji(random.choice(emo))], is_big=False)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@bot.message_reaction_handler(func=lambda message: True)
|
|
29
|
+
def get_reactions(message):
|
|
30
|
+
bot.reply_to(message, f"You changed the reaction from {[r.emoji for r in message.old_reaction]} to {[r.emoji for r in message.new_reaction]}")
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
bot.infinity_polling(allowed_updates=['message', 'message_reaction'])
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
env/
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Simple bot for Google cloud deployment.
|
|
3
|
+
|
|
4
|
+
Docs:
|
|
5
|
+
https://cloud.google.com/run/docs/quickstarts/build-and-deploy/deploy-python-service
|
|
6
|
+
|
|
7
|
+
1. Receive your bot's token from https://t.me/BotFather
|
|
8
|
+
|
|
9
|
+
2. Create a Google Cloud project. https://cloud.google.com/resource-manager/docs/creating-managing-projects
|
|
10
|
+
|
|
11
|
+
3. Install the Google Cloud CLI. https://cloud.google.com/sdk/docs/install
|
|
12
|
+
|
|
13
|
+
4. Move to telegram_google_cloud_bot folder
|
|
14
|
+
|
|
15
|
+
cd telegram_google_cloud_bot/
|
|
16
|
+
|
|
17
|
+
5. Initialize the gcloud CLI:
|
|
18
|
+
|
|
19
|
+
gcloud init
|
|
20
|
+
|
|
21
|
+
6. To set the default project for your Cloud Run service:
|
|
22
|
+
|
|
23
|
+
gcloud config set project PROJECT_ID
|
|
24
|
+
|
|
25
|
+
7. Deploy:
|
|
26
|
+
|
|
27
|
+
gcloud run deploy
|
|
28
|
+
'''
|
|
29
|
+
|
|
30
|
+
import os
|
|
31
|
+
|
|
32
|
+
from flask import Flask, request
|
|
33
|
+
|
|
34
|
+
import telebot
|
|
35
|
+
|
|
36
|
+
TOKEN = 'token_from_botfather'
|
|
37
|
+
|
|
38
|
+
bot = telebot.TeleBot(TOKEN)
|
|
39
|
+
|
|
40
|
+
app = Flask(__name__)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@bot.message_handler(commands=['start'])
|
|
44
|
+
def start(message):
|
|
45
|
+
bot.reply_to(message, 'Hello, ' + message.from_user.first_name)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@bot.message_handler(func=lambda message: True, content_types=['text'])
|
|
49
|
+
def echo_message(message):
|
|
50
|
+
bot.reply_to(message, message.text)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
@app.route('/' + TOKEN, methods=['POST'])
|
|
54
|
+
def getMessage():
|
|
55
|
+
json_string = request.get_data().decode('utf-8')
|
|
56
|
+
update = telebot.types.Update.de_json(json_string)
|
|
57
|
+
bot.process_new_updates([update])
|
|
58
|
+
return '!', 200
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
@app.route('/')
|
|
62
|
+
def webhook():
|
|
63
|
+
bot.remove_webhook()
|
|
64
|
+
bot.set_webhook(url='https://mydomain.com/' + TOKEN)
|
|
65
|
+
return '!', 200
|