Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/luckydonald/teleflask
A python telegram bot framework based on flask and pytgbot
https://github.com/luckydonald/teleflask
flask pytg pytgbot python teleflask telegram telegram-api telegram-bot-api
Last synced: about 2 months ago
JSON representation
A python telegram bot framework based on flask and pytgbot
- Host: GitHub
- URL: https://github.com/luckydonald/teleflask
- Owner: luckydonald
- License: gpl-3.0
- Created: 2016-11-13T22:11:39.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2021-01-05T22:18:49.000Z (almost 4 years ago)
- Last Synced: 2024-10-31T12:46:33.132Z (about 2 months ago)
- Topics: flask, pytg, pytgbot, python, teleflask, telegram, telegram-api, telegram-bot-api
- Language: Python
- Size: 343 KB
- Stars: 53
- Watchers: 3
- Forks: 13
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# teleflask
###### Version 1.0.1A python telegram bot framework based on flask and pytgbot
Tested to work on python 3. Might work on python 2.## Install
##### Python Package Index```bash
pip install teleflask
```#### Soon
Currently the source version (here on Github) is a work in progress version.
Great features are to come, including a Blueprint feature.
It is currently at version `2.0.0.dev23`, and will be `2`.`0`.`0` when released.If you want to try it out already, run
```bash
pip install -e git://github.com/luckydonald/[email protected]#egg=teleflask
```
Sometimes it might additionally be available on PyPI
```bash
pip install teleflask==2.0.0.dev23
```#### Soon: Proxy
Added proxy script to test webhooks in local environments
without exposing you to the internet.###### CLI proxy:
```bash
usage python -m teleflask.proxy [-h|--help] [--https] [--hookpath HOOKPATH] api_key host portPulls updates from telegram and shoves them into your app.
positional arguments:
api_key api key for the telegram API to use.
host turn on https on the url
port the port numberoptional arguments:
-h, --help show this help message and exit
--https turn on https on the url
--hookpath HOOKPATH the path for the webhook (default: "/income/{API_KEY}")
``````bash
python -m teleflask.proxy "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11" localhost 8080
```## Usage
### Initalize
```python
from teleflask import Teleflaskbot = Teleflask(API_KEY, app)
```or
```python
from teleflask import Teleflaskbot = Teleflask(API_KEY)
bot.init_app(app)
````app` being your flask app.
### Usage
```python
# use bot from initialize above
from teleflask.messages import TextMessage@app.route("/")
def index():
return "This is a normal Flask page."
# end def# Register the /start command
@bot.command("start")
def start(update, text):
# update is the update object. It is of type pytgbot.api_types.receivable.updates.Update
# text is the text after the command. Can be empty. Type is str.
return TextMessage("Hello! Thanks for using @" + bot.username + "!", parse_mode="html")
# end def# register a function to be called for updates.
@bot.on_update
def foo(update):
from pytgbot.api_types.receivable.updates import Update
assert isinstance(update, Update)
# do stuff with the update
# you can use bot.bot to access the pytgbot.Bot's messages functions
if not update.message:
return
# you could use @bot.on_message instead of this if.
# end if
if update.message.new_chat_member:
return TextMessage("Welcome!")
# end if
# end def```
# Short documentation
Functions and classes are explained in the docstrings in the sourcecode.
## `Teleflask`
`Teleflask` is the full package, including all provided functionality.
### Components
Functionality is separated into mixin classes. This means you can plug together a class with just the functions you need.
The `Teleflask` class includes all of them.#### Startup (`teleflask.mixins.StartupMixin`):
- `app.add_startup_listener` to let the given function be called on server/bot startup
- `app.remove_startup_listener` to remove the given function again
- `@app.on_startup` decorator which does the same as add_startup_listener.#### Commands (`teleflask.mixins.BotCommandsMixin`):
- `app.add_command` to add command functions
- `app.remove_command` to remove them again.
- `@app.command("command")` decorator as alias to `add_command`
- `@app.on_command("command")` decorator as alias to `add_command`#### Messages (`teleflask.mixins.MessagesMixin`):
- `app.add_message_listener` to add functions
- `app.remove_message_listener` to remove them again.
- `@app.on_message` decorator as alias to `add_message_listener`#### Updates (`teleflask.mixins.UpdatesMixin`):
- `app.add_update_listener` to add functions to be called on incoming telegram updates.
- `app.remove_update_listener` to remove them again.
- `@app.on_update` decorator doing the same as `add_update_listener`### Execution order:
It will first check for registered commands (`@command`),
next for messages listeners (`@on_message`) and
finally for update listeners (`@on_update`).### Running bot commands
The normal `pytgbot`'s bot is available as `.bot` in your `Teleflask` instance:
```python
from teleflask import Teleflaskbot = Teleflask(API_KEY, app)
bot.bot.send_message('@luckydonald', 'It works :D') # please don't spam me :D
```# Deployment
This section is for myself, as I always forget.
You can ignore the deployment section.### Development release
#### Increment
.devXYZ
```bash
bump2version dev
# check that tag and every replacement is correct
make upload
```