Skip to content

TTA - надстройка, для упрощения создания ботов в telegram

Notifications You must be signed in to change notification settings

falpin/TelegramTextApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TelegramTextApp

TelegramTextApp — это надстройка над telebot, которая упрощает создание бота в telegram

🌟 Особенности

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

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

Требования

  • Python 3.10 или новее
  • Аккаунт Telegram

Шаги:

Установка библиотеки

pip install git+https://github.com/falpin/TelegramTextApp.git

Первый запуск

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 будет запускать себя снова и снова


📝 Примеры

Готовый пример - Расписание ЧЭнК

Создание TTA

TTA.start(
  "API", # API Вашего бота
  "menus", # Название файла, где будут меню 
  debug=False, # True - при каждой ошибке, будет остановка бота, с указанием где ошибка     False(По умолчанию) - Быстрый перезапус при ошибке
  tta_experience=True, # Бот будет удалять сообщения пользователя и старые меню бота, для поддеркжки TTA
  formating_text="formating_text" # Название функции, для форматирования текста. Если не указать, текст форматироваться не будет
  )

Создание меню

"название_меню":{
  "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)
  }
},

Создание команды

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

Функция для форматирования текста

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

Функция для создания кнопок

def create_my_buttons(tta_data=None):
    buttons = {}
    buttons['название_меню'] = "Текст кнопки"
    return buttons

Функция с выводом текста

def my_text(tta_data=None):
    text = "Это мой текст"
    return text

🤝 Как внести вклад

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

📬 Обратная связь

  • Автор: falbue
  • Баги и предложения: Issues
  • Поддержать проект: ⭐️ Поставьте звезду на GitHub!