from aiogram_dialog.widgets.kbd import Button, Row, Group
from aiogram_dialog import Dialog, Window, ChatEvent, DialogManager
from aiogram_dialog.widgets.text import Format
from aiogram_dialog.widgets.kbd import Cancel
from aiogram_dialog.widgets.kbd import SwitchTo
from bot.dialogs.i18n_widget import I18NFormat
from bot.states.states import Menu
from database.repositories.user import UserRepository
from bot.utils.funcs_gpt import save_user_context_txt_file, delete_user_memory, create_vectore_store
async def on_cancel_menu(callback: ChatEvent, widget: Button, manager: DialogManager):
await callback.message.delete()
async def on_approve_new(callback: ChatEvent, widget: Button, manager: DialogManager):
user_repo: UserRepository = manager.middleware_data['user_repo']
i18n = manager.middleware_data.get('i18n')
await user_repo.delete_chat_messages(manager.middleware_data['user'])
await callback.answer(text=i18n.get('command_approve_new_text'), show_alert=True)
await callback.message.delete()
await manager.done()
async def on_approve_save(callback: ChatEvent, widget: Button, manager: DialogManager):
user_repo: UserRepository = manager.middleware_data['user_repo']
i18n = manager.middleware_data.get('i18n')
is_save = await save_user_context_txt_file(user_repo, manager.middleware_data['user'])
if not is_save:
await callback.answer(text=i18n.get('warning_save_context_txt'), show_alert=True)
return
await user_repo.delete_chat_messages(manager.middleware_data['user'])
await callback.answer(text=i18n.get('command_save_approve_kb'), show_alert=True)
await callback.message.delete()
await manager.done()
async def on_approve_delete(callback: ChatEvent, widget: Button, manager: DialogManager):
i18n = manager.middleware_data.get('i18n')
user_repo: UserRepository = manager.middleware_data['user_repo']
await delete_user_memory(user_repo, manager.middleware_data['user'])
await user_repo.delete_chat_messages(manager.middleware_data['user'])
await create_vectore_store(user_repo, manager.middleware_data['user'])
await callback.answer(text=i18n.get('command_delete_approve_text'), show_alert=True)
await callback.message.delete()
await manager.done()
dialog = Dialog(
# /new
Window(
I18NFormat('command_new_text'),
Row(
Button(
I18NFormat('command_new_approve_kb'),
id='approve_new',
on_click=on_approve_new
),
SwitchTo(
I18NFormat('command_new_save_kb'),
id='st_save',
state=Menu.save
)
),
Cancel(I18NFormat('close_kb'), id='cancel_menu', on_click=on_cancel_menu),
state=Menu.new
),
# /save
Window(
I18NFormat('command_save_text'),
Group(
Button(
I18NFormat('command_new_approve_kb'),
id='approve_save',
on_click=on_approve_save
),
Cancel(
I18NFormat('close_kb'),
id='cancel_menu',
on_click=on_cancel_menu
),
width=1
),
state=Menu.save
),
# /delete
Window(
I18NFormat('command_delete_text'),
Group(
Button(
I18NFormat('command_new_approve_kb'),
id='approve_del',
on_click=on_approve_delete
),
Cancel(
I18NFormat('close_kb'),
id='cancel_del',
on_click=on_cancel_menu
),
width=1
),
state=Menu.delete
)
)