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.pycontains configuration settings (e.g. certificate path, local_host, port etc.)passwords.pycontains secret information to be git-ignored (e.g. bot tokens)*.dbfiles are SQLite databases used by bots*.log: log files (store log_file_name and errors_file_name indata/config.pymodule)
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}/usingcertificatefor encryption aiohttp.web.Applicationserver will listen onhttp://{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
)
Metadata
Release files for davtelepot 2.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| davtelepot-2.5.1.tar.gz | 85.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| davtelepot-2.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 178.2 kB
Release files / davtelepot-2.5.1.tar.gz
| Download URL | davtelepot-2.5.1.tar.gz |
|---|---|
| Size | 85.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
59620195d7e33a54702ed59d6e0ec9ebe80ffe4fd34d06549e2ba3f780d5d494
|
|
BLAKE2b-256 checksum How to use checksums |
343c2392955500956949d3c7b5414f450cb3fe498ca84696f957dc64e7c66bf7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Release files / davtelepot-2.5.1-py3-none-any.whl
| Download URL | davtelepot-2.5.1-py3-none-any.whl |
|---|---|
| Size | 92.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0cde8ae80319e424d63b4240eb5c136013872d71e2a4b88e8234792d905e00a6
|
|
BLAKE2b-256 checksum How to use checksums |
c41f258be033cb115761462894d942369224d2b9231e299696220d16d3250f93
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|