bot_of_pray/python-bot/handlers/database_handlers.py

78 lines
3.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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, "Произошла ошибка при удалении данных")