from telegram import Update from telegram.ext import CallbackQueryHandler, CallbackContext from utils.logger import logger from handlers.user_handlers import names_menu, user_start from utils.database import save_database, USER_DATA from handlers.database_handlers import show_names, clear_names from utils.message_sender import send_message from utils.user_data import get_user_info from handlers.admin_handlers import notify_admins from handlers.user_handlers import user_shure_dialog from handlers.admin_handlers import admin_view, remove_notes, admin_start async def handle_admin_buttons(update: Update, context: CallbackContext) -> None: #handlers/callback_handlers.py global USER_DATA query = update.callback_query query.answer() if query.data == 'admin_life': context.user_data['typer']="О здравии" context.user_data['current']=0 await admin_view(update, context) elif query.data == 'admin_dead': context.user_data['typer']="За упокой" await admin_view(update, context) context.user_data['current']=0 elif query.data == 'admin_stats': pass elif query.data == 'admin_done': logger.info('Кнопка ПРОЧИТАНО прожата') await remove_notes(update, context) await admin_view(update, context) elif query.data == 'admin_next': if 'current' in context.user_data: context.user_data['current']+=1 else: context.user_data['current']=0 context.user_data['inc'] = "next" logger.info(f"current is:{context.user_data['current']}") await admin_view(update, context) elif query.data == 'admin_prev': if 'current' in context.user_data: if context.user_data['current'] >=1 : context.user_data['current']-=1 else: context.user_data['current']=0 context.user_data['inc'] = "prev" logger.info(f"current is:{context.user_data['current']}") await admin_view(update, context) elif query.data == 'admin_close': if 'typer' in context.user_data['typer']: del context.user_data['typer'] await admin_start(update, context) async def handle_user_buttons(update: Update, context: CallbackContext) -> None: #handlers/callback_handlers.py global USER_DATA # try: # del context.user_data['type'] # except: # pass query = update.callback_query user_info = await get_user_info(update, context) await query.answer() if query.data == "user_life": context.user_data['type'] = "О здравии" await names_menu(update, context) elif query.data == "user_dead": context.user_data['type'] = "За упокой" await names_menu(update, context) elif query.data == "user_comment": context.user_data['type'] = "Комментарий" await names_menu(update, context) elif query.data == "user_show": await show_names(update, context) return elif query.data == "user_save": try: TEMP_UDATA = context.user_data["TEMP_UDATA"] USER_DATA[user_info["id"]] = TEMP_UDATA save_database(USER_DATA) await send_message(update, context, "Записка сохранена") await names_menu(update, context) await notify_admins(update,context,int(user_info["id"])) except Exception as e: logger.error(f"Ошибка сохранения в файл json: {e}") return elif query.data == "user_clear": if 'type' in context.user_data: del context.user_data['type'] await user_shure_dialog(update, context) return elif query.data == "user_clear_type": logger.info(f"User_buttons, typen is {context.user_data['type']}") await user_shure_dialog(update, context) return elif query.data == "user_clear_yes": await clear_names(update, context) if 'type' in context.user_data: await names_menu(update, context) else: await user_start(update, context) return elif query.data == "user_clear_no": await names_menu(update, context) elif query.data == "user_names_menu_back": if 'type' in context.user_data: del context.user_data['type'] await user_start(update, context) else: await send_message(update, context,"Неверный запрос") def register_handlers(app): app.add_handler(CallbackQueryHandler(handle_user_buttons, pattern='^user_')) app.add_handler(CallbackQueryHandler(handle_admin_buttons, pattern='^admin_'))