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")
TelegramTextApp - это способ создания telegram бота, что бы для его использования было только одно меню
Да, в TTA есть обязательные условия Обязательными меню являются:
error
(Если при вызове какгого-то меню, оно не было создано, откроется это меню)error_command
- (Если Вы решили обновить своего бота с использованием TTA, это меню необходимо. Если же вы пишете нового бота, то можете удалить)- Вы можете изменять различные параметры этих меню, но название должно остаться неизменным
Обязательные функции:
- Функция для форматирования текста. Она может называться как угодно, но должна быть передана в'' 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 с описанием изменений