Server-client система для синхронизации сообщений из Избранного Telegram на все подключённые клиенты в реальном времени
Project description
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
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tg_saved_messages-0.1.0.tar.gz.
File metadata
- Download URL: tg_saved_messages-0.1.0.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c970af8542aeccd208d044261eb35621153c08ca3ddb699ba5db0bc34f1f386f
|
|
| MD5 |
d8839e89cd373c895cfa82d9fc6cd66f
|
|
| BLAKE2b-256 |
5a25e720c5ab2a94c5a4e34cc051def6454d281a4a3b2a02755e78d655a4f26a
|
File details
Details for the file tg_saved_messages-0.1.0-py3-none-any.whl.
File metadata
- Download URL: tg_saved_messages-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d0bfd2551f256af16041e6f21f3b52363523a576672c8fd531be9680ddbdade
|
|
| MD5 |
a30544136b936dad7c235408e8db4ea0
|
|
| BLAKE2b-256 |
a051fc2abb97cb0e17b780d8f5e0cb4e7ebf45a5d5bf379890afa1d1d058902f
|