2015-07-08 00:28:22 +02:00
Python Telegram Bot
A Python wrapper around the Telegram Bot API.
By `Leandro Toledo <leandrotoledodesouza@gmail.com> `_
2015-08-10 23:17:13 +02:00
.. image :: https://img.shields.io/pypi/v/python-telegram-bot.svg
:target: https://pypi.python.org/pypi/python-telegram-bot
:alt: PyPi Package Version
2015-09-04 23:19:05 +02:00
2015-08-10 23:13:14 +02:00
.. image :: https://img.shields.io/pypi/dm/python-telegram-bot.svg
:target: https://pypi.python.org/pypi/python-telegram-bot
2015-08-10 23:17:13 +02:00
:alt: PyPi Package Monthly Download
2015-09-04 23:19:05 +02:00
2015-08-11 23:15:45 +02:00
.. image :: https://readthedocs.org/projects/python-telegram-bot/badge/?version=latest
:target: https://readthedocs.org/projects/python-telegram-bot/?badge=latest
:alt: Documentation Status
2015-09-04 23:19:05 +02:00
2015-08-10 23:15:17 +02:00
.. image :: https://img.shields.io/github/license/leandrotoledo/python-telegram-bot.svg
:target: http://www.gnu.org/licenses/lgpl-3.0.html
:alt: LGPLv3 License
2015-07-08 00:28:22 +02:00
2015-08-11 19:37:32 +02:00
.. image :: https://travis-ci.org/leandrotoledo/python-telegram-bot.svg?branch=master
:target: https://travis-ci.org/leandrotoledo/python-telegram-bot
:alt: Travis CI Status
2015-07-21 15:46:32 +02:00
.. image :: https://codeclimate.com/github/leandrotoledo/python-telegram-bot/badges/gpa.svg
:target: https://codeclimate.com/github/leandrotoledo/python-telegram-bot
:alt: Code Climate
2015-09-04 23:19:05 +02:00
2015-08-11 19:37:32 +02:00
.. image :: https://coveralls.io/repos/leandrotoledo/python-telegram-bot/badge.svg?branch=master&service=github
:target: https://coveralls.io/github/leandrotoledo/python-telegram-bot?branch=master
:alt: Coveralls
2015-07-21 15:46:32 +02:00
2015-07-11 16:55:05 +02:00
=================
Table of contents
=================
- `Introduction`_
- `Status`_
2015-07-16 13:20:28 +02:00
1. `Telegram API support`_
2015-08-09 14:59:41 +02:00
2015-07-16 13:20:28 +02:00
2. `Python Version support`_
2015-07-11 16:55:05 +02:00
- `Installing`_
- `Getting the code`_
2015-08-11 23:07:32 +02:00
- `Getting started`_
2015-07-12 15:35:37 +02:00
2015-07-11 16:55:05 +02:00
1. `API`_
2015-07-12 15:35:37 +02:00
2015-08-09 14:59:41 +02:00
2. `Logging`_
3. `Examples`_
2015-09-04 23:19:05 +02:00
2015-08-11 23:07:32 +02:00
4. `Documentation`_
2015-07-21 14:37:10 +02:00
2015-08-10 19:37:37 +02:00
- `License`_
2015-07-11 16:55:05 +02:00
- `Contact`_
- `TODO`_
===============
_`Introduction`
===============
2015-07-08 00:28:22 +02:00
2015-07-21 14:37:10 +02:00
This library provides a pure Python interface for the `Telegram Bot API <https://core.telegram.org/bots/api> `_ . It works with Python versions from 2.6+. It also works with `Google App Engine <https://cloud.google.com/appengine> `_ .
2015-07-11 03:21:52 +02:00
2015-07-11 16:55:05 +02:00
=========
_`Status`
=========
2015-07-11 03:21:52 +02:00
2015-07-16 13:20:28 +02:00
-----------------------
_`Telegram API support`
-----------------------
2015-07-11 03:24:24 +02:00
========================= ============
Telegram Bot API Method *Supported?*
========================= ============
getMe Yes
sendMessage Yes
forwardMessage Yes
sendPhoto Yes
sendAudio Yes
sendDocument Yes
sendSticker Yes
sendVideo Yes
2015-08-17 16:45:28 +02:00
sendVoice Yes
2015-07-11 03:24:24 +02:00
sendLocation Yes
sendChatAction Yes
getUpdates Yes
getUserProfilePhotos Yes
setWebhook Yes
========================= ============
2015-07-08 00:28:22 +02:00
2015-07-16 13:20:28 +02:00
-------------------------
_`Python Version support`
-------------------------
2015-07-15 17:04:27 +02:00
============== ============
Python Version *Supported?*
============== ============
2.6 Yes
2.7 Yes
3.3 Yes
3.4 Yes
2015-09-04 23:19:05 +02:00
PyPy Yes
PyPy3 Yes
2015-07-15 17:04:27 +02:00
============== ============
2015-07-11 16:55:05 +02:00
=============
_`Installing`
=============
2015-07-08 23:35:05 +02:00
You can install python-telegram-bot using::
2015-07-21 14:42:22 +02:00
$ pip install python-telegram-bot
2015-08-09 14:59:41 +02:00
2015-07-21 14:42:22 +02:00
Or upgrade to the latest version::
2015-07-25 16:52:45 +02:00
$ pip install python-telegram-bot --upgrade
2015-07-08 23:35:05 +02:00
2015-07-11 16:55:05 +02:00
===================
_`Getting the code`
===================
2015-07-08 00:28:22 +02:00
The code is hosted at https://github.com/leandrotoledo/python-telegram-bot
Check out the latest development version anonymously with::
$ git clone https://github.com/leandrotoledo/python-telegram-bot
$ cd python-telegram-bot
Run tests:
2015-07-11 03:21:52 +02:00
$ make test
2015-07-08 00:28:22 +02:00
To see other options available, run:
2015-07-11 03:21:52 +02:00
$ make help
2015-07-08 00:28:22 +02:00
2015-08-11 23:07:32 +02:00
==================
_`Getting started`
==================
2015-07-08 00:28:22 +02:00
View the last release API documentation at: https://core.telegram.org/bots/api
2015-07-11 16:55:05 +02:00
------
_`API`
------
2015-07-08 00:28:22 +02:00
2015-07-08 22:58:50 +02:00
The API is exposed via the `` telegram.Bot `` class.
2015-07-08 23:00:56 +02:00
To generate an Access Token you have to talk to `BotFather <https://telegram.me/botfather> `_ and follow a few simple steps (described `here <https://core.telegram.org/bots#botfather> `_ ).
2015-07-08 22:58:50 +02:00
For full details see the `Bots: An introduction for developers <https://core.telegram.org/bots> `_ .
To create an instance of the `` telegram.Bot `` ::
2015-07-08 00:28:22 +02:00
>>> import telegram
>>> bot = telegram.Bot(token='token')
To see if your credentials are successful::
>>> print bot.getMe()
{"first_name": "Toledo's Palace Bot", "username": "ToledosPalaceBot"}
2015-07-08 22:58:50 +02:00
Bots can't initiate conversations with users. A user must either add them to a group or send them a message first. People can use `` telegram.me/<bot_username> `` links or username search to find your bot.
To fetch text messages sent to your Bot::
>>> updates = bot.getUpdates()
>>> print [u.message.text for u in updates]
To fetch images sent to your Bot::
>>> updates = bot.getUpdates()
>>> print [u.message.photo for u in updates if u.message.photo]
2015-07-09 14:48:41 +02:00
To reply messages you'll always need the chat_id::
2015-07-08 22:58:50 +02:00
>>> chat_id = bot.getUpdates()[-1].message.chat_id
2015-07-09 14:48:41 +02:00
To post a text message::
2015-07-09 04:35:08 +02:00
>>> bot.sendMessage(chat_id=chat_id, text="I'm sorry Dave I'm afraid I can't do that.")
To post an Emoji (special thanks to `Tim Whitlock <http://apps.timwhitlock.info/emoji/tables/unicode> `_ )::
>>> bot.sendMessage(chat_id=chat_id, text=telegram.Emoji.PILE_OF_POO)
2015-07-08 22:58:50 +02:00
2015-07-14 10:24:08 +02:00
To post an image file via URL (right now only sendPhoto supports this)::
2015-07-11 03:31:04 +02:00
>>> bot.sendPhoto(chat_id=chat_id, photo='https://telegram.org/img/t_logo.png')
2015-08-17 16:45:28 +02:00
To post a voice file::
2015-07-08 22:58:50 +02:00
2015-08-17 16:45:28 +02:00
>>> bot.sendVoice(chat_id=chat_id, voice=open('tests/telegram.ogg', 'rb'))
2015-07-08 22:58:50 +02:00
To tell the user that something is happening on bot's side::
>>> bot.sendChatAction(chat_id=chat_id, action=telegram.ChatAction.TYPING)
2015-07-09 14:49:34 +02:00
To create `Custom Keyboards <https://core.telegram.org/bots#keyboards> `_ ::
2015-07-09 14:48:41 +02:00
>>> custom_keyboard = [[ telegram.Emoji.THUMBS_UP_SIGN, telegram.Emoji.THUMBS_DOWN_SIGN ]]
>>> reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard)
>>> bot.sendMessage(chat_id=chat_id, text="Stay here, I'll be back.", reply_markup=reply_markup)
2015-07-09 14:49:34 +02:00
To hide `Custom Keyboards <https://core.telegram.org/bots#keyboards> `_ ::
2015-07-09 14:48:41 +02:00
>>> reply_markup = telegram.ReplyKeyboardHide()
>>> bot.sendMessage(chat_id=chat_id, text="I'm back.", reply_markup=reply_markup)
2015-07-08 22:58:50 +02:00
There are many more API methods, to read the full API documentation::
$ pydoc telegram.Bot
2015-08-09 14:59:41 +02:00
-----------
_`Logging`
-----------
You can get logs in your main application by calling `logging` and setting the log level you want::
>>> import logging
>>> logger = logging.getLogger()
>>> logger.setLevel(logging.INFO)
If you want DEBUG logs instead::
>>> logger.setLevel(logging.DEBUG)
2015-07-21 14:39:23 +02:00
-----------
2015-07-21 14:37:10 +02:00
_`Examples`
2015-07-21 14:39:23 +02:00
-----------
2015-07-21 14:37:10 +02:00
2015-07-21 14:38:20 +02:00
Here follows some examples to help you to get your own Bot up to speed:
2015-07-21 14:37:10 +02:00
2015-07-21 14:38:20 +02:00
- `echobot <https://github.com/leandrotoledo/python-telegram-bot/blob/master/examples/echobot.py> `_ replies back messages.
2015-07-21 14:37:10 +02:00
2015-07-21 14:38:20 +02:00
- `roboed <https://github.com/leandrotoledo/python-telegram-bot/blob/master/examples/roboed.py> `_ talks to `Robô Ed <http://www.ed.conpet.gov.br/br/converse.php> `_ .
2015-07-21 14:37:10 +02:00
2015-08-10 15:55:40 +02:00
- `Simple-Echo-Telegram-Bot <https://github.com/sooyhwang/Simple-Echo-Telegram-Bot> `_ simple Python Telegram bot that echoes your input with Flask microframework, setWebhook method, and Google App Engine (optional) - by @sooyhwang.
2015-07-21 14:38:20 +02:00
- `DevOps Reaction Bot <https://github.com/leandrotoledo/gae-devops-reaction-telegram-bot> `_ sends latest or random posts from `DevOps Reaction <http://devopsreactions.tumblr.com/> `_ . Running on `Google App Engine <https://cloud.google.com/appengine> `_ (billing has to be enabled for fully Socket API support).
2015-07-11 15:57:38 +02:00
2015-08-11 23:07:32 +02:00
================
_`Documentation`
================
`` python-telegram-bot `` 's documentation lives at `Read the Docs <http://python-telegram-bot.readthedocs.org/en/latest/> `_ .
2015-08-10 19:37:37 +02:00
==========
_`License`
==========
You may copy, distribute and modify the software provided that modifications are described and licensed for free under `LGPL-3 <http://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 <http://www.gnu.org/licenses/lgpl-3.0.html> `_ , but applications that use the library don't have to be.
2015-07-11 16:55:05 +02:00
==========
_`Contact`
==========
2015-07-11 06:55:33 +02:00
2015-09-05 00:14:54 +02:00
Feel free to join to our `Telegram group <https://telegram.me/joinchat/00b9c0f802509b946b2e8e98b73e19be> `_ .
2015-08-27 02:45:09 +02:00
2015-09-05 04:07:03 +02:00
If you face trouble joining in the group please ping me `via Telegram <https://telegram.me/leandrotoledo> `_ , I'll be glad to add you.
2015-07-11 06:55:33 +02:00
2015-07-11 16:55:05 +02:00
=======
_`TODO`
=======
2015-07-08 22:58:50 +02:00
Patches and bug reports are `welcome <https://github.com/leandrotoledo/python-telegram-bot/issues/new> `_ , just please keep the style consistent with the original source.
2015-07-21 14:42:22 +02:00
- Add commands handler.