python-telegram-bot/README.rst

211 lines
7.6 KiB
ReStructuredText
Raw Normal View History

2015-12-13 21:18:59 +01:00
.. image:: https://github.com/python-telegram-bot/logos/blob/master/logo-text/png/ptb-logo-text_768.png?raw=true
:align: center
2016-07-24 01:21:35 +02:00
:target: https://python-telegram-bot.org
2015-12-13 21:18:59 +01:00
:alt: python-telegram-bot Logo
2015-07-08 00:28:22 +02:00
2016-07-24 01:16:57 +02:00
We have made you a wrapper you can't refuse
2015-07-08 00:28:22 +02:00
We have a vibrant community of developers helping each other in our `Telegram group <https://telegram.me/pythontelegrambotgroup>`_. Join us!
*Stay tuned for library updates and new releases on our* `Telegram Channel <https://telegram.me/pythontelegrambotchannel>`_.
2015-10-08 15:40:27 +02:00
2015-08-10 23:17:13 +02:00
.. image:: https://img.shields.io/pypi/v/python-telegram-bot.svg
2018-04-17 06:45:05 +02:00
:target: https://pypi.org/project/python-telegram-bot/
2015-08-10 23:17:13 +02:00
:alt: PyPi Package Version
2015-09-04 23:19:05 +02:00
.. image:: https://img.shields.io/pypi/pyversions/python-telegram-bot.svg
2018-04-17 06:45:05 +02:00
:target: https://pypi.org/project/python-telegram-bot/
:alt: Supported Python versions
Documentation Improvements (#2008) * Minor doc updates, following official API docs * Fix spelling in Defaults docstrings * Clarify Changelog of v12.7 about aware dates * Fix typo in CHANGES.rst (#2024) * Fix PicklePersistence.flush() with only bot_data (#2017) * Update pylint in pre-commit to fix CI (#2018) * Add Filters.via_bot (#2009) * feat: via_bot filter also fixing a small mistake in the empty parameter of the user filter and improve docs slightly * fix: forgot to set via_bot to None * fix: redoing subclassing to copy paste solution * Cosmetic changes Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de> * Update CHANGES.rst Fixed Typo Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de> Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com> * Update downloads badge, add info on IRC Channel to Getting Help section * Remove RegexHandler from ConversationHandlers Docs (#1973) Replaced RegexHandler with MessageHandler, since the former is deprecated * Fix Filters.via_bot docstrings * Add notes on Markdown v1 being legacy mode * Fixed typo in the Regex doc.. (#2036) * Typo: Spelling * Minor cleanup from #2043 * Document CommandHandler ignoring channel posts * Doc fixes for a few telegram.ext classes * Doc fixes for most `telegram` classes. * pep-8 forgot the hard wrap is at 99 chars, not 100! fixed a few spelling mistakes too. * Address review and made rendering of booleans consistent True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes. * Few doc fixes for inline* classes As usual, docs were cross-checked with official tg api docs. * Doc fixes for telegram/files classes As usual, docs were cross-checked with official tg api docs. * Doc fixes for telegram.Game Mostly just added hyperlinks. And fixed message length doc. As usual, docs were cross-checked with official tg api docs. * Very minor doc fix for passportfile.py and passportelementerrors.py Didn't bother changing too much since this seems to be a custom implementation. * Doc fixes for telegram.payments As usual, cross-checked with official bot api docs. * Address review 2 Few tiny other fixes too. * Changed from ``True/False/None`` to :obj:`True/False/None` project-wide. Few tiny other doc fixes too. Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com> Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com> Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com> Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com> Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
.. image:: https://cpu.re/static/python-telegram-bot/downloads.svg
:target: https://www.cpu.re/static/python-telegram-bot/downloads-by-python-version.txt
:alt: PyPi Package Monthly Download
.. image:: https://img.shields.io/badge/docs-latest-af1a97.svg
:target: https://python-telegram-bot.readthedocs.io/
2015-08-11 23:15:45 +02:00
:alt: Documentation Status
2015-09-04 23:19:05 +02:00
2015-11-09 19:06:30 +01:00
.. image:: https://img.shields.io/pypi/l/python-telegram-bot.svg
:target: https://www.gnu.org/licenses/lgpl-3.0.html
2015-08-10 23:15:17 +02:00
:alt: LGPLv3 License
2015-07-08 00:28:22 +02:00
Rename Test suite … (#1750) * Rename Test suite * Actually change the badge in readme * fix download without path arguments (#1591) * fix download without path arguments * fix download without path arguments * solved downloading a file without file_path or custom_path * if no file_path, download as file_id * Add test case * Elaborate doc string Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de> * Add default values (#1490) * added parse_mode parameter in Updater and in Bot class to set a default parse mode for bot * DefaultValue * Add default parse_mode everywhere * Renome to default_parse_mode * Test def parse_mode for send_*, edit_message_* * Remove duplicate code in Input* classes * Improve handling of def_p_m for Bot methods * Remove unneeded deletion of kwargs * Make @log preserve signature, add bots with defaults to tests * Fix Codacy * Fix Travis Error * Add default_disable_notification * Add default_disable_web_page_preview * Add default_disable_timeout * add default_disable_web_page_preview for InputTextMessageContent * add default_quote * Try fixing test_pin_and_unpin * Just run 3.5 tests for paranoia * add tests for Defaults * Revert "Just run 3.5 tests for paranoia" This reverts commit 1baa91a3a1f4b352161fe5715a9797f158d9c1b2. * Tidy up parameters, move Defaults to ext * Stage new files, because im an idiot * remove debug prints * change equality checks for DEFAULT_NONE * Some last changes * fix S&R error so that tests actually run Co-authored-by: Ak4zh <agwl.akash@gmail.com> Co-authored-by: Eldinnie <Eldinnie@users.noreply.github.com> * Skip test relying on ordered dicts for 3.5 (#1752) * Rename Test suite * Actually change the badge in readme Co-authored-by: Gabriel Simonetto <42247511+GabrielSimonetto@users.noreply.github.com> Co-authored-by: Ak4zh <agwl.akash@gmail.com> Co-authored-by: Eldinnie <Eldinnie@users.noreply.github.com>
2020-02-06 11:38:21 +01:00
.. image:: https://github.com/python-telegram-bot/python-telegram-bot/workflows/GitHub%20Actions/badge.svg?event=schedule
:target: https://github.com/python-telegram-bot/python-telegram-bot/
:alt: Github Actions workflow
2015-09-04 23:19:05 +02:00
.. image:: https://codecov.io/gh/python-telegram-bot/python-telegram-bot/branch/master/graph/badge.svg
:target: https://codecov.io/gh/python-telegram-bot/python-telegram-bot
:alt: Code coverage
.. image:: http://isitmaintained.com/badge/resolution/python-telegram-bot/python-telegram-bot.svg
:target: http://isitmaintained.com/project/python-telegram-bot/python-telegram-bot
:alt: Median time to resolve an issue
2016-02-01 18:14:17 +01:00
2018-10-01 22:16:48 +02:00
.. image:: https://api.codacy.com/project/badge/Grade/99d901eaa09b44b4819aec05c330c968
:target: https://www.codacy.com/app/python-telegram-bot/python-telegram-bot?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=python-telegram-bot/python-telegram-bot&amp;utm_campaign=Badge_Grade
:alt: Code quality
2016-01-09 14:57:46 +01:00
.. image:: https://img.shields.io/badge/Telegram-Group-blue.svg
2016-03-13 23:23:48 +01:00
:target: https://telegram.me/pythontelegrambotgroup
2016-01-09 14:57:46 +01:00
:alt: Telegram Group
2015-07-21 15:46:32 +02:00
2017-10-10 13:09:11 +02:00
.. image:: https://img.shields.io/badge/IRC-Channel-blue.svg
:target: https://webchat.freenode.net/?channels=##python-telegram-bot
:alt: IRC Bridge
2015-07-11 16:55:05 +02:00
=================
Table of contents
=================
- `Introduction`_
- `Telegram API support`_
2015-07-16 13:20:28 +02:00
2015-07-11 16:55:05 +02:00
- `Installing`_
2015-08-11 23:07:32 +02:00
- `Getting started`_
2015-07-12 15:35:37 +02:00
2016-03-23 21:36:34 +01:00
#. `Learning by example`_
2016-02-01 18:14:17 +01:00
2016-03-23 21:36:34 +01:00
#. `Logging`_
2016-01-04 11:34:47 +01:00
2016-03-23 21:36:34 +01:00
#. `Documentation`_
2015-07-21 14:37:10 +02:00
- `Getting help`_
2015-07-11 16:55:05 +02:00
- `Contributing`_
2015-07-11 16:55:05 +02:00
2016-04-24 18:39:48 +02:00
- `License`_
2016-05-29 12:35:52 +02:00
============
Introduction
============
2015-07-08 00:28:22 +02:00
2016-05-28 21:44:10 +02:00
This library provides a pure Python interface for the
`Telegram Bot API <https://core.telegram.org/bots/api>`_.
It's compatible with Python versions 3.6+. PTB might also work on `PyPy <http://pypy.org/>`_, though there have been a lot of issues before. Hence, PyPy is not officially supported.
2016-05-28 21:44:10 +02:00
In addition to the pure API implementation, this library features a number of high-level classes to
make the development of bots easy and straightforward. These classes are contained in the
``telegram.ext`` submodule.
2015-07-11 03:21:52 +02:00
2016-05-29 12:35:52 +02:00
====================
Telegram API support
====================
2015-07-16 13:20:28 +02:00
All types and methods of the Telegram Bot API **4.8** are supported.
2015-07-08 00:28:22 +02:00
2016-05-29 12:35:52 +02:00
==========
Installing
==========
2015-07-08 23:35:05 +02:00
You can install or upgrade python-telegram-bot with:
.. code:: shell
2015-07-21 14:42:22 +02:00
$ pip install python-telegram-bot --upgrade
2015-07-08 23:35:05 +02:00
Or you can install from source with:
.. code:: shell
$ git clone https://github.com/python-telegram-bot/python-telegram-bot --recursive
$ cd python-telegram-bot
$ python setup.py install
In case you have a previously cloned local repository already, you should initialize the added urllib3 submodule before installing with:
.. code:: shell
$ git submodule update --init --recursive
2016-09-24 15:46:02 +02:00
2016-05-29 12:35:52 +02:00
===============
Getting started
===============
2015-07-08 00:28:22 +02:00
2016-05-28 21:44:10 +02:00
Our Wiki contains a lot of resources to get you started with ``python-telegram-bot``:
2016-04-25 09:58:09 +02:00
2016-05-28 21:44:10 +02:00
- `Introduction to the API <https://github.com/python-telegram-bot/python-telegram-bot/wiki/Introduction-to-the-API>`_
- Tutorial: `Your first Bot <https://github.com/python-telegram-bot/python-telegram-bot/wiki/Extensions-%E2%80%93-Your-first-Bot>`_
2016-05-28 21:44:10 +02:00
Other references:
2016-05-28 21:44:10 +02:00
- `Telegram API documentation <https://core.telegram.org/bots/api>`_
- `python-telegram-bot documentation <https://python-telegram-bot.readthedocs.io/>`_
2016-05-29 12:35:52 +02:00
-------------------
Learning by example
-------------------
2016-03-23 21:36:34 +01:00
2020-01-26 21:19:59 +01:00
We believe that the best way to learn this package is by example. Here
are some examples for you to review. Even if it is not your approach for learning, please take a
2020-07-16 19:17:57 +02:00
look at ``echobot.py``, it is the de facto base for most of the bots out there. Best of all,
2016-05-28 21:44:10 +02:00
the code for these examples are released to the public domain, so you can start by grabbing the
code and building on top of it.
2016-03-23 21:36:34 +01:00
2016-07-24 02:42:55 +02:00
Visit `this page <https://github.com/python-telegram-bot/python-telegram-bot/blob/master/examples/README.md>`_ to discover the official examples or look at the examples on the `wiki <https://github.com/python-telegram-bot/python-telegram-bot/wiki/Examples>`_ to see other bots the community has built.
2016-03-23 21:36:34 +01:00
2016-05-29 12:35:52 +02:00
-------
Logging
-------
2016-01-05 13:32:19 +01:00
2016-05-28 21:44:10 +02:00
This library uses the ``logging`` module. To set up logging to standard output, put:
2016-04-25 09:58:09 +02:00
.. code:: python
2016-01-04 11:34:47 +01:00
2016-05-28 21:44:10 +02:00
import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
2016-01-04 11:34:47 +01:00
2016-05-28 21:44:10 +02:00
at the beginning of your script.
2015-08-09 14:59:41 +02:00
2016-05-28 21:44:10 +02:00
You can also use logs in your application by calling ``logging.getLogger()`` and setting the log level you want:
2016-04-25 09:58:09 +02:00
.. code:: python
2015-08-09 14:59:41 +02:00
2016-05-28 21:44:10 +02:00
logger = logging.getLogger()
logger.setLevel(logging.INFO)
2015-08-09 14:59:41 +02:00
2016-04-25 09:58:09 +02:00
If you want DEBUG logs instead:
.. code:: python
2015-08-09 14:59:41 +02:00
2016-05-28 21:44:10 +02:00
logger.setLevel(logging.DEBUG)
2015-08-09 14:59:41 +02:00
2016-05-29 12:35:52 +02:00
=============
Documentation
=============
2015-08-11 23:07:32 +02:00
``python-telegram-bot``'s documentation lives at `readthedocs.io <https://python-telegram-bot.readthedocs.io/>`_.
2015-08-11 23:07:32 +02:00
2016-05-29 12:35:52 +02:00
============
Getting help
============
2015-07-11 06:55:33 +02:00
You can get help in several ways:
1. We have a vibrant community of developers helping each other in our `Telegram group <https://telegram.me/pythontelegrambotgroup>`_. Join us!
2016-05-28 21:44:10 +02:00
Documentation Improvements (#2008) * Minor doc updates, following official API docs * Fix spelling in Defaults docstrings * Clarify Changelog of v12.7 about aware dates * Fix typo in CHANGES.rst (#2024) * Fix PicklePersistence.flush() with only bot_data (#2017) * Update pylint in pre-commit to fix CI (#2018) * Add Filters.via_bot (#2009) * feat: via_bot filter also fixing a small mistake in the empty parameter of the user filter and improve docs slightly * fix: forgot to set via_bot to None * fix: redoing subclassing to copy paste solution * Cosmetic changes Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de> * Update CHANGES.rst Fixed Typo Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de> Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com> * Update downloads badge, add info on IRC Channel to Getting Help section * Remove RegexHandler from ConversationHandlers Docs (#1973) Replaced RegexHandler with MessageHandler, since the former is deprecated * Fix Filters.via_bot docstrings * Add notes on Markdown v1 being legacy mode * Fixed typo in the Regex doc.. (#2036) * Typo: Spelling * Minor cleanup from #2043 * Document CommandHandler ignoring channel posts * Doc fixes for a few telegram.ext classes * Doc fixes for most `telegram` classes. * pep-8 forgot the hard wrap is at 99 chars, not 100! fixed a few spelling mistakes too. * Address review and made rendering of booleans consistent True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes. * Few doc fixes for inline* classes As usual, docs were cross-checked with official tg api docs. * Doc fixes for telegram/files classes As usual, docs were cross-checked with official tg api docs. * Doc fixes for telegram.Game Mostly just added hyperlinks. And fixed message length doc. As usual, docs were cross-checked with official tg api docs. * Very minor doc fix for passportfile.py and passportelementerrors.py Didn't bother changing too much since this seems to be a custom implementation. * Doc fixes for telegram.payments As usual, cross-checked with official bot api docs. * Address review 2 Few tiny other fixes too. * Changed from ``True/False/None`` to :obj:`True/False/None` project-wide. Few tiny other doc fixes too. Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com> Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com> Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com> Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com> Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
2. In case you are unable to join our group due to Telegram restrictions, you can use our `IRC channel <https://webchat.freenode.net/?channels=##python-telegram-bot>`_.
2016-05-28 21:44:10 +02:00
Documentation Improvements (#2008) * Minor doc updates, following official API docs * Fix spelling in Defaults docstrings * Clarify Changelog of v12.7 about aware dates * Fix typo in CHANGES.rst (#2024) * Fix PicklePersistence.flush() with only bot_data (#2017) * Update pylint in pre-commit to fix CI (#2018) * Add Filters.via_bot (#2009) * feat: via_bot filter also fixing a small mistake in the empty parameter of the user filter and improve docs slightly * fix: forgot to set via_bot to None * fix: redoing subclassing to copy paste solution * Cosmetic changes Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de> * Update CHANGES.rst Fixed Typo Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de> Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com> * Update downloads badge, add info on IRC Channel to Getting Help section * Remove RegexHandler from ConversationHandlers Docs (#1973) Replaced RegexHandler with MessageHandler, since the former is deprecated * Fix Filters.via_bot docstrings * Add notes on Markdown v1 being legacy mode * Fixed typo in the Regex doc.. (#2036) * Typo: Spelling * Minor cleanup from #2043 * Document CommandHandler ignoring channel posts * Doc fixes for a few telegram.ext classes * Doc fixes for most `telegram` classes. * pep-8 forgot the hard wrap is at 99 chars, not 100! fixed a few spelling mistakes too. * Address review and made rendering of booleans consistent True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes. * Few doc fixes for inline* classes As usual, docs were cross-checked with official tg api docs. * Doc fixes for telegram/files classes As usual, docs were cross-checked with official tg api docs. * Doc fixes for telegram.Game Mostly just added hyperlinks. And fixed message length doc. As usual, docs were cross-checked with official tg api docs. * Very minor doc fix for passportfile.py and passportelementerrors.py Didn't bother changing too much since this seems to be a custom implementation. * Doc fixes for telegram.payments As usual, cross-checked with official bot api docs. * Address review 2 Few tiny other fixes too. * Changed from ``True/False/None`` to :obj:`True/False/None` project-wide. Few tiny other doc fixes too. Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com> Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com> Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com> Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com> Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
3. Report bugs, request new features or ask questions by `creating an issue <https://github.com/python-telegram-bot/python-telegram-bot/issues/new/choose>`_.
2019-10-22 00:04:31 +02:00
Documentation Improvements (#2008) * Minor doc updates, following official API docs * Fix spelling in Defaults docstrings * Clarify Changelog of v12.7 about aware dates * Fix typo in CHANGES.rst (#2024) * Fix PicklePersistence.flush() with only bot_data (#2017) * Update pylint in pre-commit to fix CI (#2018) * Add Filters.via_bot (#2009) * feat: via_bot filter also fixing a small mistake in the empty parameter of the user filter and improve docs slightly * fix: forgot to set via_bot to None * fix: redoing subclassing to copy paste solution * Cosmetic changes Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de> * Update CHANGES.rst Fixed Typo Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de> Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com> * Update downloads badge, add info on IRC Channel to Getting Help section * Remove RegexHandler from ConversationHandlers Docs (#1973) Replaced RegexHandler with MessageHandler, since the former is deprecated * Fix Filters.via_bot docstrings * Add notes on Markdown v1 being legacy mode * Fixed typo in the Regex doc.. (#2036) * Typo: Spelling * Minor cleanup from #2043 * Document CommandHandler ignoring channel posts * Doc fixes for a few telegram.ext classes * Doc fixes for most `telegram` classes. * pep-8 forgot the hard wrap is at 99 chars, not 100! fixed a few spelling mistakes too. * Address review and made rendering of booleans consistent True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes. * Few doc fixes for inline* classes As usual, docs were cross-checked with official tg api docs. * Doc fixes for telegram/files classes As usual, docs were cross-checked with official tg api docs. * Doc fixes for telegram.Game Mostly just added hyperlinks. And fixed message length doc. As usual, docs were cross-checked with official tg api docs. * Very minor doc fix for passportfile.py and passportelementerrors.py Didn't bother changing too much since this seems to be a custom implementation. * Doc fixes for telegram.payments As usual, cross-checked with official bot api docs. * Address review 2 Few tiny other fixes too. * Changed from ``True/False/None`` to :obj:`True/False/None` project-wide. Few tiny other doc fixes too. Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com> Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com> Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com> Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com> Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
4. Our `Wiki pages <https://github.com/python-telegram-bot/python-telegram-bot/wiki/>`_ offer a growing amount of resources.
5. You can even ask for help on Stack Overflow using the `python-telegram-bot tag <https://stackoverflow.com/questions/tagged/python-telegram-bot>`_.
2016-05-28 21:44:10 +02:00
2015-08-27 02:45:09 +02:00
2016-05-29 12:35:52 +02:00
============
Contributing
============
2015-07-08 22:58:50 +02:00
Contributions of all sizes are welcome. Please review our `contribution guidelines <https://github.com/python-telegram-bot/python-telegram-bot/blob/master/.github/CONTRIBUTING.rst>`_ to get started. You can also help by `reporting bugs <https://github.com/python-telegram-bot/python-telegram-bot/issues/new>`_.
2016-04-24 18:39:48 +02:00
2016-05-29 12:35:52 +02:00
=======
License
=======
2016-04-24 18:39:48 +02:00
2016-05-29 12:35:52 +02:00
You may copy, distribute and modify the software provided that modifications are described and licensed for free under `LGPL-3 <https://www.gnu.org/licenses/lgpl-3.0.html>`_. Derivatives works (including modifications or anything statically linked to the library) can only be redistributed under LGPL-3, but applications that use the library don't have to be.