* Add support for sending telegram messages to topics
Based on original PR #104059 by [jgresty](https://github.com/jgresty).
Did not manage to merge conflicts, so I remade the changes from scratch, including suggestions from previous PR reviews.
Topics were added to telegram groups in November 2022, and to the
telegram-bot library in version 20.0. They are a purely additive change
that is exposed by a single parameter `message_thread_id`. Not passing
this parameter will not change the behaviour from current.
This same parameter is used to send messages to threads and messages to
topics inside groups.
https://telegram.org/blog/topics-in-groups-collectible-usernames/it?setln=en#topics-in-groupsFixes#81888Fixes#91750
* telegram_bot: add tests for threads feature.
* telegram_bot: fixed tests for threads.
* telegram_bot: fixed wrong line.
* Update test_telegram_bot.py
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Bump python-telegram-bot package version to the latest.
* PySocks is no longer required as python-telegram-bot doesn't use urllib3 anymore.
* Fix moved ParseMode import
* Update filters import to new structure.
* Refactor removed Request objects to HTTPXRequest objects.
* Update to support asyncc functions
* Update timeout to new kwarg
connect_timeout is the most obvious option based on current param description, but this may need changing.
* Compatibility typo.
* Make methods async and use Bot client async natively
* Type needs to be Optional
That's what the source types are from the library
Also handle new possibility of None value
* Add socks support version of the library
* Refactor load_data function
Update to be async friendly
Refactor to use httpx instead of requests.
* Refactor Dispatcher references to Application
This is the newer model of the same class.
* Make more stuff async-friendly.
* Update tests to refactor Dispatcher usage out.
* Remove import and reference directly
* Refactor typing method
* Use async_fire now we have async support
* Fix some over complicate inheritance.
* Add the polling test telegram_text event fired back in.
* Add extra context to comment
* Handler should also be async
* Use underscores instead of camelCase
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Renamed kwarg.
* Refactor current timeout param to be read timeout
Reading the old version of the library code I believe this matches the existing functionality best
* Combine unload methods into one listener
* Fix test by stopping HA as part of fixture
* Add new fixture to mock stop_polling call
Use this in all polling tests.
* No longer need to check if application is running
It was to stop a test failing.
* Make sure the updater is started in tests
Mock external call methods
Remove stop_polling mock.
* Use cleaner references to patched methods
* Improve test by letting the library create the Update object
* Mock component tear down methods to be async
* Bump mypy cache version
* Update dependency to install from git
Allows use as a custom component in 2024.3
Allows us to track mypy issue resolution.
* Update manifest and requirements for new python-telegram-bot release.
* Remove pytest filterwarnings entry for old version of python-telegram-bot library.
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Support secret_token for setWebHook api
* Revert configuration YAML changes; generate and store secret token instead
* Reformat codes
* Revert storage of secret token; use ephemeral secret token instead
* Reformat
* Update homeassistant/components/telegram_bot/webhooks.py
* Fix when header is not present
* Check for non-empty token
* Fix tests to support secret token
* Add tests for invalid secret token
* Minor: remove comment
* Revert back to 401
* ... and for tests
* Change patching method for the generation of secret tokens
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>