Metadata-Version: 2.4
Name: deadrat
Version: 0.0.2
Summary: A Python wrapper for the DeadRat Bot API
Project-URL: Homepage, https://github.com/rerufa/deadrat_bot_framework
Project-URL: Documentation, https://rerufa.github.io/deadrat_bot_framework/
Author-email: Rainy351 <rainy3510@gmail.com>
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.8
Requires-Dist: requests>=2.25.0
Description-Content-Type: text/markdown

# DeadRat Bot Framework 🐀

Легковесный, синхронный объектно-ориентированный фреймворк для создания ботов на Python.  
Создан для быстрого написания логики без boilerplate-кода.

## ✨ Особенности

- **Умная обработка аргументов**: Не нужно парсить строки вручную. Фреймворк сам поймет, нужны ли функции аргументы (`/command arg1 arg2`).
- **ООП-стиль**: Методы `msg.reply()`, `msg.reply_with_file()` вместо передачи ID чатов.
- **Декораторы**: Простой и понятный синтаксис регистрации команд (`@bot.command`).
- **События**: Хуки на старт, выключение и ошибки.
- **Типизация**: Полная поддержка Type Hints для автокомплита в IDE.

## 📦 Установка

1. Скопируйте файл `framework.py` в папку вашего проекта.
2. Установите зависимости:
   ```bash
   pip install deadrat
   ```

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

```python
from deadrat import Bot, Message

bot = Bot("YOUR_API_KEY")

@bot.command("/start")
def start(msg: Message):
    msg.reply(f"Привет, {msg.author.username}!")

@bot.command("/ban")
def ban(msg: Message, args: list):
    # Фреймворк сам разбил текст на аргументы
    if args:
        msg.reply(f"Пользователь {args[0]} забанен (понарошку).")

bot.run()
```

## 📚 Документация

### Инициализация

```python
bot = Bot(api_key="...", base_url="...") # base_url опционален
```

### Декораторы

#### `@bot.command(trigger)`

Регистрирует команду. Функция может принимать 1 или 2 аргумента:

1. `msg` (Message) — объект сообщения.
2. `args` (List[str]) — _опционально_. Список слов после команды.

#### `@bot.on_message()`

Регистрирует функцию, которая вызывается для всех сообщений, **не являющихся командами**.

#### `@bot.event(name)`

Обработка системных событий.

- `"startup"`: Перед началом прослушивания.
- `"shutdown"`: При остановке (Ctrl+C).
- `"error"`: При возникновении исключения в хендлерах.

### Объект Message

- `msg.text` (str): Текст сообщения.
- `msg.author` (Author): Объект автора (id, username).
- `msg.reply_to_message` (Message | None): Сообщение, на которое ответили.
- `msg.reply(text, image_url)`: Ответить на сообщение.
- `msg.reply_with_file(path, text)`: Загрузить файл и ответить им.

### Объект SentMessage

Возвращается методами отправки (`msg.reply`).

- `sent.edit(new_text)`: Изменить текст.
- `sent.delete()`: Удалить сообщение.
