Metadata-Version: 2.5
Name: yuchatlib
Version: 0.2.1
Summary: Библиотека для Public API YuChat
Project-URL: Documentation, https://docs.yuchat.ru/api-docs/category/api-documentation
Project-URL: Source, https://github.com/codegenIrlX/yuchatlib
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.12
Requires-Dist: aiohttp==3.14.3
Requires-Dist: pydantic==2.13.4
Provides-Extra: dev
Requires-Dist: mypy==1.20.2; extra == 'dev'
Requires-Dist: pytest==9.1.1; extra == 'dev'
Requires-Dist: ruff==0.16.3; extra == 'dev'
Provides-Extra: release
Requires-Dist: build==1.5.0; extra == 'release'
Requires-Dist: twine==7.0.0; extra == 'release'
Description-Content-Type: text/markdown

# yuchatlib

Асинхронная Python-библиотека для создания ботов YuChat.

Поддерживает long polling, команды, декораторы обработчиков, FSM и основные
операции с сообщениями. Данные API валидируются через Pydantic.

## Установка

```powershell
pip install yuchatlib==0.2.1
```

Требуется Python 3.12 или новее.

## Быстрый старт

```python
import asyncio

from yuchatlib import HandlerContext, UpdateListItemResponseDto, YuChatBot

bot = YuChatBot(
    token="your-token",
    workspace_id="your-workspace-id",
    base_url="https://your-yuchat-api.example",
    polling_interval=2,
    storage=None,
)


@bot.command(name="start", description="Начать работу")
async def start_command(
    update: UpdateListItemResponseDto,
    context: HandlerContext,
) -> None:
    del update
    await context.answer("👋 Привет!")


if __name__ == "__main__":
    asyncio.run(bot.run_polling())
```

## Отправка в указанный чат

```python
await bot.send_message(
    chat_id="target-chat-id",
    text="Сообщение в выбранный чат",
)
```

## Возможности

- long polling через `getUpdates`;
- команды вида `/start`;
- FSM и state-handler;
- отправка и редактирование сообщений;
- явная отправка по `chat_id`;
- асинхронная обработка разных чатов;
- Pydantic-валидация API.

При `storage=None` FSM и polling offset хранятся в памяти процесса и
сбрасываются после перезапуска.

## Реализованные методы

| Раздел | Метод | Назначение |
|---|---|---|
| `message` | `getMessages` | [Получить сообщения чата](https://docs.yuchat.ru/api-docs/api/get-messages) |
| `message` | `getMessageById` | [Получить сообщение по ID](https://docs.yuchat.ru/api-docs/api/get-message-by-id) |
| `message` | `sendMessage` | [Отправить сообщение](https://docs.yuchat.ru/api-docs/api/send-message) |
| `message` | `editMessage` | [Изменить сообщение](https://docs.yuchat.ru/api-docs/api/edit-message) |
| `message` | `deleteMessages` | [Удалить сообщения](https://docs.yuchat.ru/api-docs/api/delete-messages) |
| `message` | `forwardMessage` | [Переслать сообщения](https://docs.yuchat.ru/api-docs/api/forward-message) |
| `message` | `pinMessage` | [Закрепить сообщение](https://docs.yuchat.ru/api-docs/api/pin-message) |
| `message` | `toggleReaction` | [Добавить или удалить реакцию](https://docs.yuchat.ru/api-docs/api/toggle-reaction) |
| `message` | `unpinMessage` | [Открепить сообщение](https://docs.yuchat.ru/api-docs/api/unpin-message) |
| `update` | `getUpdates` | [Получить события бота](https://docs.yuchat.ru/api-docs/api/get-updates) |
| `update` | `setUpdateSettings` | [Настроить типы событий](https://docs.yuchat.ru/api-docs/api/set-update-settings) |
| `me` | `getMe` | [Получить сведения о боте](https://docs.yuchat.ru/api-docs/api/get-me) |

[Документация Public API YuChat](https://docs.yuchat.ru/api-docs/category/api-documentation)

[История изменений](CHANGELOG.md)
