tg-saved-messages
Сервер-клиент система для синхронизации сообщений из Избранного (Saved Messages) Telegram на все подключённые клиенты в реальном времени. Приём и отдача сообщений работают независимо.
Установка
pip install tg-saved-messages
Для разработки (из исходников):
cd tg-abuz
pip install -e .
Быстрый старт
1. Получите API ключи Telegram
Зарегистрируйтесь на my.telegram.org и создайте приложение. Вам понадобятся api_id и api_hash.
2. Запустите сервер
# Из терминала PyCharm или любого терминала
tg-saved-server --api-id YOUR_API_ID --api-hash YOUR_API_HASH --host 127.0.0.1 --port 8000
Или через Python:
import os
from pathlib import Path
import uvicorn
from tg_saved_messages.server import create_app
app = create_app(
api_id=int(os.environ["TG_API_ID"]),
api_hash=os.environ["TG_API_HASH"],
session_path=Path("tg_session"),
)
uvicorn.run(app, host="127.0.0.1", port=8000)
При первом запуске Telethon запросит номер телефона и код подтверждения — это одноразовая авторизация.
3. Запустите клиент(ы)
tg-saved-client --url ws://127.0.0.1:8000/ws
Или программно:
import asyncio
from tg_saved_messages.client import SavedMessagesClient
from tg_saved_messages.models import SavedMessage
async def on_message(msg: SavedMessage):
print(f"Получено: {msg.text}")
client = SavedMessagesClient(server_url="ws://127.0.0.1:8000/ws", on_message=on_message)
await client.run()
Клиент сохраняет сообщения в папку saved_messages/ (при использовании CLI).
Отправка сообщений
Любой клиент может отправить сообщение в Избранное через сервер:
await client.connect()
await client.send_message("Текст сообщения")
Или из командной строки:
python examples/send_message.py "Текст сообщения"
Сообщение появится в Избранном и будет разослано всем подключённым клиентам.
Архитектура
- Сервер (FastAPI) — принимает сообщения из Telegram (Избранное), рассылает их всем клиентам, принимает команду
sendи отправляет сообщения в Избранное через Telegram. - Клиенты — подключаются по WebSocket, получают сообщения в реальном времени и могут отправлять их независимо друг от друга.
- Независимость — приём и отправка работают асинхронно.
Примеры
См. папку examples/:
run_server.py— запуск сервераrun_client.py— запуск клиента с сохранением в файлы
Публикация на PyPI
pip install build twine
python -m build
twine upload dist/*
Требования
- Python 3.9+
- FastAPI, Uvicorn, Telethon, websockets
Лицензия
MIT
Metadata
Release files for tg-saved-messages 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| tg_saved_messages-0.1.0.tar.gz | 11.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tg_saved_messages-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.5 kB
Release files / tg_saved_messages-0.1.0.tar.gz
| Download URL | tg_saved_messages-0.1.0.tar.gz |
|---|---|
| Size | 11.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c970af8542aeccd208d044261eb35621153c08ca3ddb699ba5db0bc34f1f386f
|
|
BLAKE2b-256 checksum How to use checksums |
5a25e720c5ab2a94c5a4e34cc051def6454d281a4a3b2a02755e78d655a4f26a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.2
|
Release files / tg_saved_messages-0.1.0-py3-none-any.whl
| Download URL | tg_saved_messages-0.1.0-py3-none-any.whl |
|---|---|
| Size | 14.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2d0bfd2551f256af16041e6f21f3b52363523a576672c8fd531be9680ddbdade
|
|
BLAKE2b-256 checksum How to use checksums |
a051fc2abb97cb0e17b780d8f5e0cb4e7ebf45a5d5bf379890afa1d1d058902f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.2
|
Security for tg-saved-messages 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.