semvec/pypi-packages huggingface dataset:
tg-saved-messages 0.1.0
Server-client система для синхронизации сообщений из Избранного Telegram на все подключённые клиенты в реальном времени
License: MIT
Requires Python: >=3.9
Keywords: telegram, saved-messages, sync, fastapi, websocket

# tg-saved-messages

Сервер-клиент система для синхронизации сообщений из **Избранного** (Saved Messages) Telegram на все подключённые клиенты в реальном времени. Приём и отдача сообщений работают независимо.

## Установка

```bash
pip install tg-saved-messages
```

Для разработки (из исходников):

```bash
cd tg-abuz
pip install -e .
```

## Быстрый старт

### 1. Получите API ключи Telegram

Зарегистрируйтесь на [my.telegram.org](https://my.telegram.org) и создайте приложение. Вам понадобятся `api_id` и `api_hash`.

### 2. Запустите сервер

```bash
# Из терминала PyCharm или любого терминала
tg-saved-server --api-id YOUR_API_ID --api-hash YOUR_API_HASH --host 127.0.0.1 --port 8000
```

Или через Python:

```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. Запустите клиент(ы)

```bash
tg-saved-client --url ws://127.0.0.1:8000/ws
```

Или программно:

```python
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).

## Отправка сообщений

Любой клиент может отправить сообщение в Избранное через сервер:

```python
await client.connect()
await client.send_message("Текст сообщения")
```

Или из командной строки:
```bash
python examples/send_message.py "Текст сообщения"
```

Сообщение появится в Избранном и будет разослано всем подключённым клиентам.

## Архитектура

- **Сервер (FastAPI)** — принимает сообщения из Telegram (Избранное), рассылает их всем клиентам, принимает команду `send` и отправляет сообщения в Избранное через Telegram.
- **Клиенты** — подключаются по WebSocket, получают сообщения в реальном времени и могут отправлять их независимо друг от друга.
- **Независимость** — приём и отправка работают асинхронно.

## Примеры

См. папку `examples/`:
- `run_server.py` — запуск сервера
- `run_client.py` — запуск клиента с сохранением в файлы

## Публикация на PyPI

```bash
pip install build twine
python -m build
twine upload dist/*
```

## Требования

- Python 3.9+
- FastAPI, Uvicorn, Telethon, websockets

## Лицензия

MIT