ТЗ: Смотри, в скрипте у нас есть аккаунт, который подписан как admin.session + admin.json, подключение в актуально и все работает, не могу реализовать определенную идею, не шарю какие импорты и как реализовать технически, сейчас опишу о чем я. Мне нужно, чтобы когда этот аккаунт подключается через ****** (через Telegram клиент), он с задержкой в 2 секунды сразу же изменял настройки чата. А именно — открывал участникам возможность писать и отправлять медиа-файлы. Чтобы было понятнее, о чём речь — вот как эти настройки выглядят в TDATA: Group Info → Manage group или Permissions → What can members of this group do? → Send messages — ON Group Info → Manage group или Permissions → What can members of this group do? → Send media → Photos — ON Group Info → Manage group или Permissions → What can members of this group do? → Send media → Video files — ON Group Info → Manage group или Permissions → What can members of this group do? → Send media → Video messages — ON Все остальные параметры — игнорируем. Как они стояли, так и оставляем. Если вдруг эти настройки уже включены, ничего менять не надо — просто лог об успешной проверке и всё. Мы используем Telethon 1.37.0 — пожалуйста, глянь актуальную документацию и подходы, чтобы решение было корректным и логичным. Аккаунт admin (из accounts/admin.session + admin.json) должен применять настройки в чате, ссылка на который указана в chat.txt. В файле просто указана приватная-ссылка на чат TG. Очень надеюсь на твою помощь!! Как пытался реализовать я: from telethon.tl.functions.channels import JoinChannelRequest, EditBannedRequest from telethon.tl.functions.messages import ImportChatInviteRequest from telethon.tl.types import ChatBannedRights client = TelegramClient( session=os.path.join(ACCOUNTS_PATH, session_name), api_id=json_data['app_id'], api_hash=json_data['app_hash'], device_model=json_data['device'], system_version=json_data['sdk'], app_version=json_data['app_version'], lang_code=json_data['lang_pack'], system_lang_code=json_data['system_lang_pack'], proxy=(ProxyType.HTTP, proxy_host, int(proxy_port), True, proxy_user, proxy_pass) ) **** подключение к аккаунту если что все верное и рабочее, просто чтобы не удлинять код не дублировал все**** me = await client.get_me() clients[acc_number] = client active_accounts.append(me.id) ***** проблемы начинаются с этого момента, непосредственно реализация идеи чтобы админ открывал права чата**** if session_name == "admin": logger.info(f"[{session_name}] [Поток {acc_number}] - Администраторский аккаунт, настройка разрешений чата") await asyncio.sleep(2) # Задержка 2 секунды перед изменением настроек try: # Проверка подписки на чат if not await check_subscription(client, url_chat): logger.error(f"[{session_name}] [Поток {acc_number}] - Не удалось присоединиться к чату: {url_chat}") return # Получение сущности чата chat_entity = await client.get_entity(url_chat) chat_id = chat_entity.id logger.debug(f"[{session_name}] [Поток {acc_number}] - Чат получен: ID={chat_id}") # Проверка прав администратора from telethon import types admins = await client.get_participants(chat_entity, filter=types.ChannelParticipantsAdmins) is_admin = any(admin.id == me.id for admin in admins) if not is_admin: logger.error(f"[{session_name}] [Поток {acc_number}] - Аккаунт не является администратором чата") return # Получение текущих прав по умолчанию current_rights = chat_entity.default_banned_rights if hasattr(chat_entity, 'default_banned_rights') else None # Определение новых прав (разрешить отправку сообщений и медиа) new_rights = ChatBannedRights( until_date=None, send_messages=False, # Разрешить отправку сообщений send_media=False, # Разрешить отправку медиа (включает фото, видео, видеосообщения) # Сохраняем остальные права без изменений view_messages=current_rights.view_messages if current_rights else False, send_stickers=current_rights.send_stickers if current_rights else True, send_gifs=current_rights.send_gifs if current_rights else True, send_games=current_rights.send_games if current_rights else True, send_inline=current_rights.send_inline if current_rights else True, embed_links=current_rights.embed_links if current_rights else True, send_polls=current_rights.send_polls if current_rights else True, change_info=current_rights.change_info if current_rights else True, invite_users=current_rights.invite_users if current_rights else True, pin_messages=current_rights.pin_messages if current_rights else True ) # Проверка, нужно ли обновлять права update_needed = ( current_rights and ( current_rights.send_messages != new_rights.send_messages or current_rights.send_media != new_rights.send_media ) ) if update_needed: # Применение новых прав from telethon.tl.functions.channels import EditChatDefaultBannedRightsRequest await client(EditChatDefaultBannedRightsRequest( peer=chat_entity, banned_rights=new_rights )) logger.info(f"[{session_name}] [Поток {acc_number}] - Настройки чата успешно обновлены") else: logger.info(f"[{session_name}] [Поток {acc_number}] - Настройки чата уже соответствуют требованиям") except Exception as e: logger.error(f"[{session_name}] [Поток {acc_number}] - Ошибка при обновлении настроек чата: {str(e)}") return Python from telethon.tl.functions.channels import JoinChannelRequest, EditBannedRequest from telethon.tl.functions.messages import ImportChatInviteRequest from telethon.tl.types import ChatBannedRights client = TelegramClient( session=os.path.join(ACCOUNTS_PATH, session_name), api_id=json_data['app_id'], api_hash=json_data['app_hash'], device_model=json_data['device'], system_version=json_data['sdk'], app_version=json_data['app_version'], lang_code=json_data['lang_pack'], system_lang_code=json_data['system_lang_pack'], proxy=(ProxyType.HTTP, proxy_host, int(proxy_port), True, proxy_user, proxy_pass) ) **** подключение к аккаунту если что все верное и рабочее, просто чтобы не удлинять код не дублировал все**** me = await client.get_me() clients[acc_number] = client active_accounts.append(me.id) ***** проблемы начинаются с этого момента, непосредственно реализация идеи чтобы админ открывал права чата**** if session_name == "admin": logger.info(f"[{session_name}] [Поток {acc_number}] - Администраторский аккаунт, настройка разрешений чата") await asyncio.sleep(2) # Задержка 2 секунды перед изменением настроек try: # Проверка подписки на чат if not await check_subscription(client, url_chat): logger.error(f"[{session_name}] [Поток {acc_number}] - Не удалось присоединиться к чату: {url_chat}") return # Получение сущности чата chat_entity = await client.get_entity(url_chat) chat_id = chat_entity.id logger.debug(f"[{session_name}] [Поток {acc_number}] - Чат получен: ID={chat_id}") # Проверка прав администратора from telethon import types admins = await client.get_participants(chat_entity, filter=types.ChannelParticipantsAdmins) is_admin = any(admin.id == me.id for admin in admins) if not is_admin: logger.error(f"[{session_name}] [Поток {acc_number}] - Аккаунт не является администратором чата") return # Получение текущих прав по умолчанию current_rights = chat_entity.default_banned_rights if hasattr(chat_entity, 'default_banned_rights') else None # Определение новых прав (разрешить отправку сообщений и медиа) new_rights = ChatBannedRights( until_date=None, send_messages=False, # Разрешить отправку сообщений send_media=False, # Разрешить отправку медиа (включает фото, видео, видеосообщения) # Сохраняем остальные права без изменений view_messages=current_rights.view_messages if current_rights else False, send_stickers=current_rights.send_stickers if current_rights else True, send_gifs=current_rights.send_gifs if current_rights else True, send_games=current_rights.send_games if current_rights else True, send_inline=current_rights.send_inline if current_rights else True, embed_links=current_rights.embed_links if current_rights else True, send_polls=current_rights.send_polls if current_rights else True, change_info=current_rights.change_info if current_rights else True, invite_users=current_rights.invite_users if current_rights else True, pin_messages=current_rights.pin_messages if current_rights else True ) # Проверка, нужно ли обновлять права update_needed = ( current_rights and ( current_rights.send_messages != new_rights.send_messages or current_rights.send_media != new_rights.send_media ) ) if update_needed: # Применение новых прав from telethon.tl.functions.channels import EditChatDefaultBannedRightsRequest await client(EditChatDefaultBannedRightsRequest( peer=chat_entity, banned_rights=new_rights )) logger.info(f"[{session_name}] [Поток {acc_number}] - Настройки чата успешно обновлены") else: logger.info(f"[{session_name}] [Поток {acc_number}] - Настройки чата уже соответствуют требованиям") except Exception as e: logger.error(f"[{session_name}] [Поток {acc_number}] - Ошибка при обновлении настроек чата: {str(e)}") return