# BotLibrary/system/edit_bot.py # Библиотека установки настроек бота через проект и конфиги from aiogram.types import ChatAdministratorRights from ProjectsFiles import BotEdit from .bots import bot from ..loggers import Logs # Настройка логирования log_type = "Edit" # Функция для выполнения всех настроек, если они не совпадают async def set_all() -> None: """ Выполняет все необходимые настройки бота, если они не совпадают с текущими значениями. :return: None """ await set_adm_rights() await set_bot_name() await set_bot_description() await set_bot_short_description() # Функция установки прав администратора async def set_adm_rights() -> None: """ Устанавливает права администратора для бота, если они отличаются от текущих. :return: None """ rights = ChatAdministratorRights( is_anonymous=BotEdit.is_anonymous, can_manage_chat=BotEdit.manage_chat, can_delete_messages=BotEdit.delete_messages, can_manage_video_chats=BotEdit.manage_video_chats, can_restrict_members=BotEdit.restrict_members, can_promote_members=BotEdit.promote_members, can_change_info=BotEdit.change_info, can_invite_users=BotEdit.invite_users, can_post_stories=BotEdit.post_stories, can_edit_stories=BotEdit.edit_stories, can_delete_stories=BotEdit.delete_stories, can_post_messages=BotEdit.post_messages, can_edit_messages=BotEdit.edit_messages, can_pin_messages=BotEdit.pin_messages, can_manage_topics=BotEdit.manage_topics, ) # Применяем права только в случае изменения current_rights = await bot.get_my_default_administrator_rights() if current_rights != rights: await bot.set_my_default_administrator_rights(rights) # Функция установки имени бота с проверкой на ограничения async def set_bot_name() -> None: """ Устанавливает имя бота, если оно отличается от текущего и соответствует ограничениям. :return: None """ # Получаем текущее имя бота current_name = (await bot.get_me()).first_name # Проверка длины имени if len(BotEdit.name) < 1 or len(BotEdit.name) > 32: Logs.error(log_type=log_type, user="NAME_BOT", text="Имя бота должно быть от 1 до 32 символов.") # Проверяем, совпадает ли текущее имя с тем, которое мы хотим установить if current_name != BotEdit.name: await bot.set_my_name(BotEdit.name) # Функция установки описания бота с проверкой на ограничения async def set_bot_description() -> None: """ Устанавливает описание бота, если оно отличается от текущего и соответствует ограничениям. :return: None """ # Получаем текущее описание бота current_description = await bot.get_my_description() # Проверка длины описания if len(BotEdit.description) > 255: Logs.error(log_type=log_type, user="DISCRIPT", text="Короткое описание бота не может превышать 255 символов.") # Проверяем, совпадает ли текущее описание с тем, которое мы хотим установить if current_description != BotEdit.description: await bot.set_my_description(description=BotEdit.description) # Функция установки короткого описания бота с проверкой на ограничения async def set_bot_short_description() -> None: """ Устанавливает короткое описание бота, если оно отличается от текущего и соответствует ограничениям. :return: None """ # Получаем текущее короткое описание бота current_short_description = await bot.get_my_short_description() # Проверка длины короткого описания if len(BotEdit.short_description) > 512: Logs.error(log_type=log_type, user="SHORT_DISCRIPT", text="Описание виджета не может превышать 512 символов.") # Проверяем, совпадает ли текущее короткое описание с тем, которое мы хотим установить if current_short_description != BotEdit.short_description: await bot.set_my_short_description(short_description=BotEdit.short_description)