Skip to main content

Telegram bot API mirroring class, featuring dataset-powered SQLite databases.

Project description

davtelepot

This project conveniently mirrors the Telegram bot API with the class Bot.

Please note that Python3.5+ is needed to run async code.

Check requirements.txt for third party dependencies.

Check out help(Bot) for detailed information.

Project folders

davtelepot/data folder

  • config.py contains configuration settings (e.g. certificate path, local_host, port etc.)
  • passwords.py contains secret information to be git-ignored (e.g. bot tokens)
  • *.db files are SQLite databases used by bots
  • *.log: log files (store log_file_name and errors_file_name in data/config.py module)

examples folder

This folder contains full-commented and ready-to-run examples for simple davtelepot.bot Telegram bots.

Usage

import sys

from davtelepot.bot import Bot

from data.passwords import my_token, my_other_token

long_polling_bot = Bot(token=my_token, database_url='my_db')
webhook_bot = Bot(token=my_other_token, hostname='example.com',
                  certificate='path/to/certificate.pem',
                  database_url='my_other_db')

@long_polling_bot.command('/foo')
async def foo_command(bot, update, user_record):
    return "Bar!"

@webhook_bot.command('/bar')
async def bar_command(bot, update, user_record):
    return "Foo!"

exit_state = Bot.run(
    local_host='127.0.0.5',
    port=8552
)
sys.exit(exit_state)

Check out help(Bot) for detailed information.

Webhook additional information

To run a bot in webhook modality, you have to provide a hostname and certificate at bot instantiation and a local_host and port when calling Bot.run method.

  • Telegram will send POST requests at https://{hostname}/webhook/{tokens}/ using certificate for encryption
  • aiohttp.web.Application server will listen on http://{local_host}:{port} for updates

It is therefore required a reverse proxy passing incoming requests to local_host.

Example of nginx reverse proxy serving this purpose

server {
  listen 8553 ssl;
  listen [::]:8553 ssl;

  server_name example.com www.example.com;

  location /telegram/ {
     proxy_pass http://127.0.0.5:8552/;
  }

  ssl_certificate /path/to/fullchain.pem;
  ssl_certificate_key /path/to/privkey.pem;
}

Example of python configuration file in this situation

# File data/config.py, gitignored and imported in main script
hostname = "https://www.example.com:8553/telegram"
certificate = "/path/to/fullchain.pem"
local_host = "127.0.0.5"
port = 8552

# Main script
from data.config import hostname, certificate, local_host, port
from data.passwords import bot_token
from davtelepot.bot import Bot

my_bot = Bot(
  token=bot_token,
  hostname=hostname,
  certificate=certificate
)

# ...

Bot.run(
  local_host=local_host,
  port=port
)

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

davtelepot-2.5.1.tar.gz (85.7 kB view details)

Uploaded Source

Built Distribution

davtelepot-2.5.1-py3-none-any.whl (92.4 kB view details)

Uploaded Python 3

File details

Details for the file davtelepot-2.5.1.tar.gz.

File metadata

  • Download URL: davtelepot-2.5.1.tar.gz
  • Upload date:
  • Size: 85.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for davtelepot-2.5.1.tar.gz
Algorithm Hash digest
SHA256 59620195d7e33a54702ed59d6e0ec9ebe80ffe4fd34d06549e2ba3f780d5d494
MD5 f2d86c25769dab4a3e25bded0eb72339
BLAKE2b-256 343c2392955500956949d3c7b5414f450cb3fe498ca84696f957dc64e7c66bf7

See more details on using hashes here.

File details

Details for the file davtelepot-2.5.1-py3-none-any.whl.

File metadata

  • Download URL: davtelepot-2.5.1-py3-none-any.whl
  • Upload date:
  • Size: 92.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for davtelepot-2.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0cde8ae80319e424d63b4240eb5c136013872d71e2a4b88e8234792d905e00a6
MD5 1fa07b39c7eb4d00d443aff6e993dd92
BLAKE2b-256 c41f258be033cb115761462894d942369224d2b9231e299696220d16d3250f93

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page