Telegram bot library for Python and humans
Project description
TeBot - Telegram bot library for Python and humans
The goal is to to keep it simple.
Demo (sometimes may not work): @demo_tebot
How to install
pip3 install tebot
How to use
Start bot
If your project uses neotasker
from tebot import TeBot
# delay - delay between pollings, must be specified
mybot = TeBot(delay=2)
# obtain token from https://telegram.me/BotFather
mybot.set_token('botsecrettoken')
# optionally - load previous state
import json
with open('bot-state.json') as fh:
mybot.load(json.loads(fh.read()))
# start bot
mybot.start()
If it doesn't:
from neotasker import task_supervisor
from tebot import TeBot
task_supervisor.create_aloop('default', default=True)
task_supervisor.start()
mybot = TeBot(delay=2)
mybot.set_token('botsecrettoken')
mybot.start()
(refer to neotasker documentation for more info)
Stop bot
mybot.stop()
# if your project doesn't use neotasker
task_supervisor.stop()
# optionally - save bot state
with open('bot-state.json', 'w') as fh:
fh.write(json.dumps(mybot.serialize()))
Send messages
# text
mybot.send(text='hello world', chat_id=chat_id)
# files
with open('image.jpg', 'rb') as fh:
mybot.send(media=fh.read(), chat_id=chat_id)
If message is being sent from the handler and chat_id is not specified, current chat ID is used:
@mybot.route(path='/start')
def start(**kwargs):
mybot.send('bot started')
Download files
def somehandler(**kwargs):
payload = kwargs.get('payload')
if 'document' in payload:
try:
content = mybot.get_file_content(payload['document'].get('file_id'))
# process file content
except:
# unable to download file
High-level API: routes
TeBot has flask-style routes, which may be registered either by calling
mybot.register_route(fn, path, methods)
or with function decorator:
# message handler. can be only one, registered to handle all regular messages
@mybot.route(methods='message')
def my_message(chat_id, text, **kwargs):
# some code
# command handler for /start and /help
@mybot.route(path=['/start', '/help'])
def start(**kwargs):
mybot.send('got HELP command')
# command and callback query handler
@mybot.route(methods='*')
def default_cmd_handler(path, **kwargs):
mybot.send(f'command not implemented: {path}')
Route parameters
-
path command path, can be string or list/tuple for multiple commands
-
methods can be either a string or a list/tuple. Valid values are: "message", "command" (default if no methods specified) and "query" / "callback_query". If "*" specified, the method is registered for both commands and callback queries
Handler kwargs
The following kwargs are sent to registered handlers:
-
text message text (only for message handler)
-
path command path (e.g. "/select" for "/select * from data")
-
query_string command query string (e.g. "* from data" for the above example)
-
chat_id current chat id
-
query_id callback query id, if handler is executed as a callback query handler
-
payload full request payload
-
method "command" or "query" for callback query
Handler return data
-
If command is handled, the handler may return nothing
-
If callback query is handled, the handler may return dict, which is used as a payload for the callback query answer (e.g. include "url", "show_alert" etc, see Telegram Bot API for more details)
Low-level API: handlers
Override class methods:
-
handle_message handle regular messages
-
handle_command handle commands (starting with '/')
-
handle_query handle callback queries
-
on_message override to implement advanced message handling
-
on_query override to implement advanced callback query handling
Bot options
mybot.timeout = 5 # set Telegram API timeout (default: 10 sec)
mybot.retry_interval = 1 # if API command fails, re-send it in 1 second
# (default: None, don't re-send)
Web hooks
To use web hooks, init bot object, but don't start it. Use process_update(payload) method to process webhook payloads.
TeBot doesn't have own web server module, you may use any available.
To register webhook, use set_webhook bot object method (args are the same as for https://core.telegram.org/bots/api#setwebhook)
To delete webhook, use delete_webhook bot object method (no args required).
Everything else
Refer to function pydoc for more info.
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
File details
Details for the file tebot-0.2.6.tar.gz
.
File metadata
- Download URL: tebot-0.2.6.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
0788d6ebe6a140ca7130900e3e9e574adc8daa79738a13e329dbb5d5d0b8562e
|
|
MD5 |
b65af952e0a2f02ae9812917f8c1a2cb
|
|
BLAKE2b-256 |
2b327af2728b5c72499361316b0c2ba6552b58b3941aab609494c72520a3f534
|