Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/licht1stein/ptb-firebase-persistence
python-telegram-bot firebase persistence
https://github.com/licht1stein/ptb-firebase-persistence
Last synced: 8 days ago
JSON representation
python-telegram-bot firebase persistence
- Host: GitHub
- URL: https://github.com/licht1stein/ptb-firebase-persistence
- Owner: licht1stein
- Created: 2020-06-22T17:21:32.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-06-22T17:44:07.000Z (over 4 years ago)
- Last Synced: 2024-10-05T20:15:49.618Z (about 1 month ago)
- Language: Python
- Size: 21.5 KB
- Stars: 4
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
![](https://github.com/python-telegram-bot/logos/blob/master/logo/png/ptb-logo_240.png?raw=true)
# Firebase Persistence for [python-telegram-bot](https://python-telegram-bot.org/)
![PyPI](https://img.shields.io/pypi/v/ptb-firebase-persistence)This is an implementation of python-telegram-bot [BasePersistence](https://python-telegram-bot.readthedocs.io/en/stable/telegram.ext.basepersistence.html?highlight=basepersistence)
class that uses [Google Firebase](https://firebase.google.com/) as persistence back-end.
This has a very nice advantage of being able to look at your `user_data`, `chat_data`, `bot_data`
and `convesations` real-time using the firebase web app.# Installation
The library obviously requires (but does not install) python-telegram-bot. It also requires *and installs*
officeial library foor Google Firebase: [firebase-admin](https://firebase.google.com/docs/admin/setup/)```bash
pip install ptb-firebase-persistence
```# Usage
## Before you start: obtain credentials from firebase
First of all you need to obtain firebase credentials, that look like this:```json
{
"type": "service_account",
"project_id": "YOUR_ID",
"private_key_id": "YOUR_PRIVATE_KEY",
"private_key": "-----BEGIN PRIVATE KEY-----\nMII...EwQ=\n-----END PRIVATE KEY-----\n",
"client_email": "firebase-adminsdk-SOME_STRING@SOME_DOMAIN.iam.gserviceaccount.com",
"client_id": "11743776666698009",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-SOMES_STRING.iam.gserviceaccount.com"
}
```and the firebase database url that looks like this, something like `https://YOUR_APP.firebaseio.com`
## Instantiation
### From environment variables (recommended)
Store the database URL in an environment variable `FIREBASE_URL` and the config as a json string in an environment variable
`FIREBASE_CREDENTIALS`.After that instantiation is as easy as:
```python
from ptb_firebase_persistence import FirebasePersistence
from telegram.ext import Updatermy_persistence = FirebasePersistence.from_environment()
updater: Updater = Updater(
'BOT_TOKEN',
persistence=my_persistence,
use_context=True,
)
```### Direct instantiation
You can also just pass the firebase credentials as URL as simple init params:```python
from ptb_firebase_persistence import FirebasePersistence
from telegram.ext import Updatermy_persistence = FirebasePersistence(database_url='YOUR_DATABASE_URL', credentials='YOUR_CREDENTIALS_DICT')
updater: Updater = Updater(
'BOT_TOKEN',
persistence=my_persistence,
use_context=True,
)
```That's it! You can now watch your data change live on Firebase.