Skip to content

Latest commit

 

History

History
132 lines (86 loc) · 3.78 KB

README.rst

File metadata and controls

132 lines (86 loc) · 3.78 KB

django-telegrambot

https://badge.fury.io/py/django-telegrambot.png https://travis-ci.org/JungDev/django-telegrambot.png?branch=master

A simple app to develop Telegram bots with Django

Documentation

The full documentation is at https://django-telegrambot.readthedocs.org.

Quickstart

Install django-telegrambot:

pip install django-telegrambot

Configure your installation

Add django_telegrambot in INSTALLED_APPS

#settings.py
INSTALLED_APPS = (
    ...
    'django_telegrambot',
    ...
)

And set your bots:

#settings.py
#Django Telegram Bot settings
TELEGRAM_BOT_TOKENS = ('BOT_1_token','BOT_2_token',)
TELEGRAM_WEBHOOK_SITE = 'https://mysite.it'
TELEGRAM_WEBHOOK_BASE = '/baseurl'
#TELEGRAM_WEBHOOK_CERTIFICATE = 'cert.pem' #If your site use self-signed certificate, must be set with location of your public key certificate. (More info at https://core.telegram.org/bots/self-signed )

Include in your urls.py the django_telegrambot.urls using the same value of TELEGRAM_WEBHOOK_BASE

#urls.py
urlpatterns = [
    ...
    url(r'^baseurl/', include('django_telegrambot.urls')),
    ...
]

Then use it in a project creating a module telegrambot.py in your app

#myapp/telegrambot.py
from django_telegrambot.apps import DjangoTelegramBot

# Define a few command handlers. These usually take the two arguments bot and
# update. Error handlers also receive the raised TelegramError object in error.
def start(bot, update):
    bot.sendMessage(update.message.chat_id, text='Hi!')


def help(bot, update):
    bot.sendMessage(update.message.chat_id, text='Help!')


def echo(bot, update):
    bot.sendMessage(update.message.chat_id, text=update.message.text)


def error(bot, update, error):
    logger.warn('Update "%s" caused error "%s"' % (update, error))


def main():
    logger.info("Loading handlers for telegram bot")

    # Default dispatcher (this is related to the first bot in settings.TELEGRAM_BOT_TOKENS)
    dp = DjangoTelegramBot.dispatcher
    # To get Dispatcher related to a specific bot
    # dp = DjangoTelegramBot.getDispatcher('BOT_n_token')     #get by bot token
    # dp = DjangoTelegramBot.getDispatcher('BOT_n_username')  #get by bot username

    # on different commands - answer in Telegram
    dp.addHandler(CommandHandler("start", start))
    dp.addHandler(CommandHandler("help", help))

    # on noncommand i.e message - echo the message on Telegram
    dp.addHandler(MessageHandler([Filters.text], echo))

    # log all errors
    dp.addErrorHandler(error)

Features

  • Multiple bots

Contributing

Patches and bug reports are welcome, just please keep the style consistent with the original source.

Running Tests

Does the code actually work?

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install -r requirements-test.txt
(myenv) $ python runtests.py

Credits

Required package: * Python Telegram Bot

Tools used in rendering this package: