Metadata-Version: 2.4
Name: tg-saved-messages
Version: 0.1.0
Summary: Server-client система для синхронизации сообщений из Избранного Telegram на все подключённые клиенты в реальном времени
Author-email: Your Name <your@email.com>
License: MIT
Project-URL: Homepage, https://github.com/yourusername/tg-saved-messages
Project-URL: Repository, https://github.com/yourusername/tg-saved-messages
Keywords: telegram,saved-messages,sync,fastapi,websocket
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Communications :: Chat
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: fastapi>=0.104.0
Requires-Dist: uvicorn[standard]>=0.24.0
Requires-Dist: telethon>=1.34.0
Requires-Dist: websockets>=12.0
Requires-Dist: pydantic>=2.0.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
Requires-Dist: httpx>=0.25; extra == "dev"

# 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
