diff --git a/adapter/matrix/handlers/__init__.py b/adapter/matrix/handlers/__init__.py index d03cba7..b2ea94d 100644 --- a/adapter/matrix/handlers/__init__.py +++ b/adapter/matrix/handlers/__init__.py @@ -1,10 +1,10 @@ from __future__ import annotations from adapter.matrix.handlers.chat import ( - handle_archive, handle_list_chats, + make_handle_archive, make_handle_new_chat, - handle_rename, + make_handle_rename, ) from adapter.matrix.handlers.confirm import handle_cancel, handle_confirm from adapter.matrix.handlers.settings import ( @@ -25,8 +25,8 @@ from core.protocol import IncomingCallback, IncomingCommand def register_matrix_handlers(dispatcher: EventDispatcher, client=None, store=None) -> None: dispatcher.register(IncomingCommand, "new", make_handle_new_chat(client, store)) dispatcher.register(IncomingCommand, "chats", handle_list_chats) - dispatcher.register(IncomingCommand, "rename", handle_rename) - dispatcher.register(IncomingCommand, "archive", handle_archive) + dispatcher.register(IncomingCommand, "rename", make_handle_rename(client, store)) + dispatcher.register(IncomingCommand, "archive", make_handle_archive(client, store)) dispatcher.register(IncomingCommand, "settings", handle_settings) dispatcher.register(IncomingCommand, "settings_skills", handle_settings_skills) dispatcher.register(IncomingCommand, "settings_connectors", handle_settings_connectors) diff --git a/adapter/matrix/handlers/chat.py b/adapter/matrix/handlers/chat.py index 0d87a14..f596f23 100644 --- a/adapter/matrix/handlers/chat.py +++ b/adapter/matrix/handlers/chat.py @@ -130,15 +130,36 @@ async def handle_list_chats( return [OutgoingMessage(chat_id=event.chat_id, text="\n".join(lines))] -async def handle_rename(event: IncomingCommand, auth_mgr, platform, chat_mgr, settings_mgr) -> list: - if not event.args: - return [OutgoingMessage(chat_id=event.chat_id, text="Укажите название: !rename Название")] - ctx = await chat_mgr.rename(event.chat_id, " ".join(event.args), user_id=event.user_id) - return [OutgoingMessage(chat_id=event.chat_id, text=f"Переименован в: {ctx.display_name}")] +def make_handle_rename( + client: Any | None, + store: Any | None, +) -> Callable[..., Awaitable[list]]: + async def handle_rename( + event: IncomingCommand, auth_mgr, platform, chat_mgr, settings_mgr + ) -> list: + if not event.args: + return [ + OutgoingMessage(chat_id=event.chat_id, text="Укажите название: !rename Название") + ] + + new_name = " ".join(event.args) + ctx = await chat_mgr.rename(event.chat_id, new_name, user_id=event.user_id) + if client is not None and ctx.surface_ref: + await client.room_set_name(ctx.surface_ref, new_name) + + return [OutgoingMessage(chat_id=event.chat_id, text=f"Переименован в: {ctx.display_name}")] + + return handle_rename -async def handle_archive( - event: IncomingCommand, auth_mgr, platform, chat_mgr, settings_mgr -) -> list: - await chat_mgr.archive(event.chat_id, user_id=event.user_id) - return [OutgoingMessage(chat_id=event.chat_id, text="Чат архивирован.")] +def make_handle_archive( + client: Any | None, + store: Any | None, +) -> Callable[..., Awaitable[list]]: + async def handle_archive( + event: IncomingCommand, auth_mgr, platform, chat_mgr, settings_mgr + ) -> list: + await chat_mgr.archive(event.chat_id, user_id=event.user_id) + return [OutgoingMessage(chat_id=event.chat_id, text="Чат архивирован.")] + + return handle_archive