78 lines
3.6 KiB
Python
78 lines
3.6 KiB
Python
from telegram import Update
|
||
from telegram.ext import CommandHandler, MessageHandler, filters, CallbackContext
|
||
from utils.logger import logger
|
||
from utils.user_data import validate_input, get_user_info, format_names
|
||
from utils.database import USER_DATA, save_database
|
||
from handlers.user_handlers import user_keyboard
|
||
from utils.message_sender import send_message
|
||
from utils.formating import format_names
|
||
|
||
async def show_names(update: Update, context: CallbackContext) -> None: # handlers/handlers.py
|
||
try:
|
||
valid_text = validate_input(update.callback_query.message.text)
|
||
global USER_DATA
|
||
user = await get_user_info(update, context)
|
||
user_id = user["id"]
|
||
|
||
# Проверяем, есть ли данные для пользователя
|
||
if user_id not in USER_DATA:
|
||
logger.info(f"id:{user_id}, name:{user}")
|
||
logger.info(f"{USER_DATA}")
|
||
await send_message(update, context, f"{user['name']}, вы еще не сохранили ни одного имени")
|
||
await send_message (update,context,"Выберите действие:", reply_markup=user_keyboard)
|
||
return
|
||
|
||
# Получаем данные пользователя
|
||
user_info = USER_DATA[user_id]
|
||
|
||
# Формируем сообщение
|
||
message = ""
|
||
for typen in ["О здравии","За упокой"]:
|
||
if typen in user_info:
|
||
#message += formating_names(user_)
|
||
message += f"<b><i>{typen}:</i></b>\n{format_names(user_info[typen],'')}\n\n"
|
||
|
||
# Комментарий
|
||
if "Комментарий" in user_info and user_info["Комментарий"]:
|
||
if message: # Если уже есть текст, добавляем разделитель
|
||
message += "\n"
|
||
message += f"<i><b>Комментарий:</b></i> {user_info['Комментарий']}"
|
||
|
||
# Если сообщение пустое (все списки пустые), выводим специальное сообщение
|
||
if not message:
|
||
await send_message (update,context,f"{user_name}, у вас нет сохраненных данных")
|
||
return
|
||
|
||
# Отправляем сформированное сообщение
|
||
await send_message(update, context, message.strip())
|
||
except ValueError as e:
|
||
await send_message(update, context, f"Ошибка: {e}")
|
||
return
|
||
await send_message (update,context,"Выберите действие:", reply_markup=user_keyboard)
|
||
|
||
async def clear_names(update: Update, context: CallbackContext) -> None: #handlers/handlers.py
|
||
global USER_DATA
|
||
try:
|
||
user_info = await get_user_info(update, context)
|
||
user_id = user_info["id"]
|
||
user_name = user_info["name"]
|
||
|
||
if user_id not in USER_DATA:
|
||
await send_message(update, context, f"{user_name}, у вас нет сохраненных данных")
|
||
return
|
||
if 'type' in context.user_data:
|
||
typen = context.user_data['typen']
|
||
if typen in USER_DATA[user_id]:
|
||
del USER_DATA[user_id][typen]
|
||
await send_message(update, context, f"Записка {typen} очищена")
|
||
else:
|
||
USER_DATA[user_id] = {}
|
||
await send_message(update, context, f"Записки удалены")
|
||
save_database(USER_DATA)
|
||
TEMP_UDATA = USER_DATA[user_id]
|
||
context.user_data["TEMP_UDATA"]=TEMP_UDATA
|
||
|
||
except Exception as e:
|
||
logger.error(f"Ошибка при очистке данных: {e}")
|
||
await send_message(update, context, "Произошла ошибка при удалении данных")
|