Metadata-Version: 2.4
Name: TelegramTextApp
Version: 0.5.6
Summary: Библиотека для создания текстовых приложений в telegram
Home-page: https://github.com/falpin/TTA
Author: falbue
Author-email: cyansair05@gmail.com
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: telebot
Requires-Dist: pytz
Requires-Dist: flask
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# TelegramTextApp
**TelegramTextApp** — это надстройка над [telebot](https://github.com/eternnoir/pyTelegramBotAPI), которая упрощает создание бота в **telegram**

## 🌟 Особенности
- Создание всех меню в одном файле
- Для запуска, нужен только API-ключ
- Быстрое создание макета бота

## ⚙️ Установка и настройка

### Требования
- Python 3.10 или новее
- Аккаунт Telegram

### Шаги:
#### Установка библиотеки
```bash
pip install git+https://github.com/falpin/TelegramTextApp.git
```
#### Первый запуск
```python
if __name__ == "__main__":
    from TelegramTextApp import TTA
    TTA.start("API_ключ_бота", "'название_файла_для_хранения_меню'.json")
```

## ❓ Вопросы
### Что такое TTA?
TelegramTextApp - это способ создания telegram бота, что бы для его использования было только одно меню
### Есть ли обязательные меню и функции?''
Да, в TTA есть обязательные условия 
Обязательными **меню** являются: 
- `error` (Если при вызове какгого-то меню, оно не было создано, откроется это меню)
- `error_command` - (Если Вы решили обновить своего бота с использованием TTA, это меню необходимо. Если же вы пишете нового бота, то можете удалить)
- Вы можете изменять различные параметры этих меню, но **название должно остаться** неизменным

Обязательные **функции**:
- Функция для форматирования текста. Она может называться как угодно, но должна быть передана в'' TTA при создании

### Зачем нужна эта строчка? `if __name__ == "__main__":`
**TTA** использует файл, в котором Вы создали бота, как дополнительный модуль, что бы обрабатывать Ваши функции и если не добавить это условие, при каждом выполнении, **TTA** будет запускать себя снова и снова 

--- 

# 📝 Примеры
Готовый пример - [Расписание ЧЭнК](https://github.com/falpin/timetable-bot)
## Создание TTA
```python
TTA.start(
  "API", # API Вашего бота
  "menus", # Название файла, где будут меню 
  debug=False, # True - при каждой ошибке, будет остановка бота, с указанием где ошибка     False(По умолчанию) - Быстрый перезапус при ошибке
  tta_experience=True, # Бот будет удалять сообщения пользователя и старые меню бота, для поддеркжки TTA
  formating_text="formating_text" # Название функции, для форматирования текста. Если не указать, текст форматироваться не будет
  )
```

## Создание меню
```json
"название_меню":{
  "width":2, // ширина клавиатуры,
  "list_page":20, // количество кнопок в меню (если кнопок больше, чем указано, автоматически добавятся навигационные кнопки)
  "text":"Любой текст. *Можно* _использовать_ __markdown__ ||разметку|| [telegram](telegram.com)",
  "error_text":"Произошла ошибка",
  "buttons":{
    "название_меню_которое_нужно_открыть":"Текст кнопки",
    "menu_name:Дополнительный_параметр":"Текст кнопки"
  },
  "create_buttons":"название_вашей_функции", // создание своих кнопкок (не рекомендуется использовать с button) 
  "return":"название_меню", // кнопка возврата в указаное меню
  "function":"название_вашей функции", // выполнение вашей функции, при открытии меню (если text остутсвует, Вы обязаны его вернуть из этой функции) 
  "loading":"Если Ваша функция будет долго выполняться, можно использовать эту заглушку",
  "handler": { // ожидание отправки сообщения от пользователя с последующим выполнением
    "function":"название_вашей_функции",
    "menu":"название_меню_которое_откроется"
  },
  "query":{
    "text":"Текст уведомления",
    "show_alert":false // размер уведомления
  },
  "send":{
    "text":"текст_рассылки",
    "recipient":"all" //роль, кому будет отправленна рассылка (так же можно указать id telegram)
  }
},
```

## Создание команды
```json
"текст_команды":{
  "menu":"название_меню_которое_откроется",
  "text":"Краткое описание команды"
},
```

## Функция для форматирования текста
```python
def formating_text(tta_data, text, type_data = None):
  format_dict = {}
  try:
    format_dict = {"input_text":tta_data["input_text"]}
    formatted_text = text.format_map(
      {key: format_dict.get(key, None) for key in re.findall(r'\{(.*?)\}', text)}
      )
  except Exception as e:
    formatted_text = text.format_map(
      {key: format_dict.get(key, None) for key in re.findall(r'\{(.*?)\}', text)}
      )

    if type_data == "text": 
      formatted_text = f"*{formatted_text}*"
      return formatted_text
```

## Функция для создания кнопок
```python
def create_my_buttons(tta_data=None):
    buttons = {}
    buttons['название_меню'] = "Текст кнопки"
    return buttons
```

## Функция с выводом текста
```python
def my_text(tta_data=None):
    text = "Это мой текст"
    return text
```

# 🤝 Как внести вклад
- Форкните репозиторий
- Создайте ветку с фичей/исправлением:
- Зафиксируйте изменения и отправьте в форк
- Создайте Pull Request с описанием изменений

# 📬 Обратная связь
- **Автор:** [falbue](https://github.com/falbue)
- **Баги и предложения:** [Issues](https://github.com/falpin/TelegramTextApp/issues)
- **Поддержать проект:** ⭐️ Поставьте звезду на **GitHub**!
