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