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 indata/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}/
usingcertificate
for encryption aiohttp.web.Application
server 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
)
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
Built Distribution
File details
Details for the file davtelepot-2.10.8.tar.gz
.
File metadata
- Download URL: davtelepot-2.10.8.tar.gz
- Upload date:
- Size: 116.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9df5f3334b5c9f32b480a581c582cdc9b881c66dabf82ecb9e4ced39ac7adb8e |
|
MD5 | 9f53f7cf0aabd142ec5560c794da6b7e |
|
BLAKE2b-256 | c7fd66076ee8a13804d6473d6ee9fa7c66f4963e57f6c872805bffd23b6a3990 |
File details
Details for the file davtelepot-2.10.8-py3-none-any.whl
.
File metadata
- Download URL: davtelepot-2.10.8-py3-none-any.whl
- Upload date:
- Size: 122.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 946b6ec8577a41a94a7b72742df54aed76ff38df5a653bda1902d0e86ad22c0c |
|
MD5 | ab65f374a1746e74583eac5ea80e0eeb |
|
BLAKE2b-256 | 494184c3e6df8616c2743368c3d003d79a228224c12a2d17fb8bff08245c19af |