bot_of_pray/python-bot/handlers/callback_handlers.py

113 lines
4.3 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 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_'))