Metadata-Version: 2.4
Name: fastgramm
Version: 1.0.3
Summary: Максимально простая библиотека для создания Telegram ботов
Home-page: https://github.com/mawwki/fastgram
Author: mawwki
Author-email: igrok.lui@gmail.com
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: pytelegrambotapi
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Fastgramm
### Максимально простая библиотека для Telegram ботов на Python**


---

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

```bash
pip install fastgramm
```

Скопируйте файл `fastgramm.py` в ваш проект.

```python
from fastgramm import *
```

---

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

```python
from fastgramm import FastGrammBot, snd, btn, ifm

bot = FastGrammBot("YOUR_BOT_TOKEN")

# Создаём кнопку
btn("Привет", snd("Здравствуй!"))

# Реакция на текст
ifm("Как дела?", snd("Хорошо!"))

bot.run()
```

---

## 📚 Полное описание функций

### 🔧 Основные функции

| Функция | Описание | Пример |
|---------|----------|--------|
| `FastGrammBot(token)` | Создание бота | `bot = FastGrammBot("TOKEN")` |
| `run()` | Запуск бота | `bot.run()` |

### 📨 Отправка сообщений

| Функция | Описание | Пример |
|---------|----------|--------|
| `snd(text)` | Отправить текст | `snd("Привет")` |
| `snd(lambda: ...)` | Отправить результат функции | `snd(lambda: f"Время {time.time()}")` |
| `last()` | Получить последний текст от пользователя | `snd(last())` |

### ⌨️ Клавиатуры

| Функция | Описание | Пример                                                |
|---------|----------|-------------------------------------------------------|
| `btn(name, action)` | Создать одну reply-кнопку | `btn("Старт", snd("Начинаем"))`                       |
| `btns(names, action)` | Создать несколько кнопок с одним действием | `btns(["Да","Нет"], snd("Выбрано"))`                  |
| `clr()` | Убрать reply-клавиатуру | `clr()`                                               |
| `inb(msg, btn_text, action)` | Inline-кнопка | `inb("Выбери","Нажми",snd("Ок"))`                     |
| `inbs(msg, *args)` | Несколько inline-кнопок | `inbs("Меню","К1 ",snd("1"),"К2",snd("2"))` |

### 🎯 Условные обработчики

| Функция | Описание | Пример |
|---------|----------|--------|
| `ifm(cond, *actions)` | Выполнить действия при условии | `ifm("Привет", snd("И тебе"))` |
| `any` | Любое сообщение | `ifm(any, snd("Эхо: "+last()))` |

### 🖼️ Медиа

| Функция | Описание | Пример |
|---------|----------|--------|
| `pic(url)` | Отправить фото | `pic("https://example.com/photo.jpg")` |
| `pic("file.jpg")` | Фото из локального файла | `pic("cat.jpg")` |
| `vid(url)` | Отправить видео | `vid("video.mp4")` |
| `sticker(file_id)` | Отправить стикер | `sticker("CAACAgIAAxkB...")` |
| `location(lat, lon)` | Геолокация | `location(55.75, 37.62)` |
| `album(photos)` | Альбом фотографий | `album(["1.jpg","2.jpg"])` |

### ✏️ Редактирование и удаление

| Функция | Описание | Пример |
|---------|----------|--------|
| `edit(new_text)` | Редактировать последнее сообщение бота | `edit("Новый текст")` |
| `edit_delay(seconds, new_text)` | Редактировать с задержкой | `edit_delay(3, "Через 3 сек")` |
| `edit_to_last(seconds=0)` | Редактировать в текст пользователя | `edit_to_last(2)` |
| `dlt()` | Удалить последнее сообщение бота | `dlt()` |
| `dlt_delay(seconds)` | Удалить с задержкой | `dlt_delay(5)` |

### ⏰ Таймеры и периодические действия

| Функция | Описание | Пример |
|---------|----------|--------|
| `wait(seconds, action)` | Задержка (блокирующая) | `wait(3, snd("Готово"))` |
| `after(seconds, action)` | Асинхронная задержка | `after(5, snd("Прошло 5 сек"))` |
| `every(seconds, action)` | Повторять каждые N секунд | `every(60, snd("Прошла минута"))` |
| `every_at(time_str, action)` | Повторять в определённое время | `every_at("09:00", snd("Доброе утро!"))` |

---

## 🎮 Примеры использования

### Пример 1: Эхо-бот с клавиатурой

```python
from fastgramm import FastGrammBot, snd, btn, ifm, any, last

bot = FastGrammBot("TOKEN")

btn("Помощь", snd("Я эхо-бот. Просто напиши что-нибудь"))
ifm(any, snd(lambda: f"Ты написал: {last()}"))

bot.run()
```

### Пример 2: Бот с инлайн-меню

```python
from fastgramm import FastGrammBot, snd, btn, inbs, clr

bot = FastGrammBot("TOKEN")

def main_menu():
    inbs("Главное меню",
        "Профиль", snd("Имя: Пользователь"),
        "Настройки", snd("Настройки пока не готовы"),
        "Выход", clr()
    )

btn("Меню", main_menu)
btn("Назад", main_menu)

bot.run()
```

### Пример 3: Отложенные действия

```python
from fastgramm import FastGrammBot, snd, btn, after, edit, dlt

bot = FastGrammBot("TOKEN")

btn("Временное сообщение", 
    snd("Это сообщение исчезнет через 3 секунды"),
    dlt_delay(3)
)

btn("Отложенный ответ",
    after(5, snd("Привет через 5 секунд!"))
)

btn("Редактор",
    snd("Старый текст"),
    after(3, edit("Новый текст!"))
)

bot.run()
```

### Пример 4: Медиа бот

```python
from fastgramm import FastGrammBot, snd, btn, pic, album

bot = FastGrammBot("TOKEN")

btn("Котик", pic("https://cataas.com/cat"))
btn("Альбом", album(["photo1.jpg", "photo2.jpg", "photo3.jpg"]))
btn("Моя геолокация", location(55.751244, 37.618423))

bot.run()
```

### Пример 5: Полноценный бот-помощник

```python
from fastgramm import (
    FastGrammBot, snd, btn, ifm, any, 
    last, clr, inb, after
)

bot = FastGrammBot("TOKEN")

# Приветствие
ifm("/start",
    snd("👋 Привет! Я бот-помощник.\nИспользуй /help для списка команд"),
    btn("Помощь", snd("/help - справка\n/about - о боте"))
)

# Справка
ifm("/help", snd("📋 Команды:\n/start - начать\n/about - о боте\n/clear - очистить"))

# О боте
ifm("/about", snd("🤖 Бот создан на Fastgram v1.0.2\nПростая библиотека для Telegram ботов"))

# Очистка клавиатуры
ifm("/clear", clr())

# Подтверждение действия
def confirm():
    inb("Вы уверены?", "Да", snd("Действие выполнено"))
    inb("Вы уверены?", "Нет", clr())

btn("Важное действие", confirm)

# Эхо (для всего остального)
ifm(any, snd(lambda: f"📝 Эхо: {last()}"))

bot.run()
```
---

## ⚠️ Важные замечания

1. **Порядок инициализации** — сначала определите все `ifm` и кнопки, затем вызовите `bot.run()`

2. **Функция `last()`** — работает только внутри обработчиков `ifm` и действий кнопок

3. **`edit()` и `dlt()`** — работают только с последним сообщением, отправленным ботом

4. **`after()` и `every()`** — работают асинхронно, не блокируют основной поток

5. **`wait()`** — блокирует выполнение, используйте `after()` для неблокирующих задержек

6. **Кнопки** — после вызова `clr()` клавиатура удаляется, кнопки нужно создавать заново

---
