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
Hashes for davtelepot-2.10.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26cdb2af733f50eb2b3850e7f1429105d6d5aad8158496d437b767e04f660f02 |
|
MD5 | c6b2ac8a7fb6b6f577d94901bb33ab5e |
|
BLAKE2b-256 | 4e92051b74c92858ff3f7e6d6c775fc6c39e3938ff7601b4decbc006ab4dbc55 |