diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 9b94910..39b759d 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1,8 +1,8 @@ Руководитель проекта: - Семен Фомченков (@Armatik), e-mail: armatik@alt-gnome.ru - + Ведущие разработчики: - Максим Слипенко (@Maks1m_S), e-mail: maxim@slipenko.com - + Участники проекта: - Илья Женецкий (@ilyazheprog) diff --git a/gitflic-ci.yaml b/gitflic-ci.yaml new file mode 100644 index 0000000..c6a98ab --- /dev/null +++ b/gitflic-ci.yaml @@ -0,0 +1,14 @@ +stages: + - lint + +lint-pre-commit: + stage: lint + image: python:3.12-bullseye + before_script: + - pip install pre-commit + scripts: + - pre-commit run --all-files + cache: + paths: + - .cache/pip + - .cache/pre-commit diff --git a/src/altlinux/README.md b/src/altlinux/README.md index 6f6f5c7..ec07657 100644 --- a/src/altlinux/README.md +++ b/src/altlinux/README.md @@ -2,7 +2,7 @@ ## Описание -Подготовленная версия OCAB Lite для интеграции в чат [Альт Линукс](https://t.me/alt_linux) +Подготовленная версия OCAB Lite для интеграции в чат [Альт Линукс](https://t.me/alt_linux) ## Функционал Список OCAB-модулей используемых в боте: diff --git a/src/altlinux/config-example.yaml b/src/altlinux/config-example.yaml index 1f4c864..a294ec7 100644 --- a/src/altlinux/config-example.yaml +++ b/src/altlinux/config-example.yaml @@ -4,4 +4,4 @@ core: filters: approved_chat_id: - - -111111 \ No newline at end of file + - -111111 diff --git a/src/ocab_modules/ocab_modules/standard/config/config_manager.py b/src/ocab_modules/ocab_modules/standard/config/config_manager.py index adbcfe3..1c61a39 100644 --- a/src/ocab_modules/ocab_modules/standard/config/config_manager.py +++ b/src/ocab_modules/ocab_modules/standard/config/config_manager.py @@ -85,7 +85,7 @@ class ConfigManager: value_type: str, options: List[Any] = None, multiple: bool = False, - default_value = None, + default_value=None, editable: bool = True, shared: bool = False, required: bool = False, diff --git a/src/ocab_modules/ocab_modules/standard/filters/__init__.py b/src/ocab_modules/ocab_modules/standard/filters/__init__.py index ed9efdd..254b877 100644 --- a/src/ocab_modules/ocab_modules/standard/filters/__init__.py +++ b/src/ocab_modules/ocab_modules/standard/filters/__init__.py @@ -1,7 +1,7 @@ from .filters import ( + ChatIDFilter, ChatModerOrAdminFilter, ChatNotInApproveFilter, - ChatIDFilter, chat_not_in_approve, module_init, ) diff --git a/src/ocab_modules/ocab_modules/standard/report/__init__.py b/src/ocab_modules/ocab_modules/standard/report/__init__.py index 729f10a..c8fccb0 100644 --- a/src/ocab_modules/ocab_modules/standard/report/__init__.py +++ b/src/ocab_modules/ocab_modules/standard/report/__init__.py @@ -1 +1 @@ -from .main import module_init \ No newline at end of file +from .main import module_init diff --git a/src/ocab_modules/ocab_modules/standard/report/main.py b/src/ocab_modules/ocab_modules/standard/report/main.py index aa744c8..7d6ea10 100644 --- a/src/ocab_modules/ocab_modules/standard/report/main.py +++ b/src/ocab_modules/ocab_modules/standard/report/main.py @@ -1,9 +1,10 @@ from typing import TYPE_CHECKING + from aiogram import Router from aiogram.filters import Command -from aiogram.types import Message, ChatMemberOwner, ChatMemberAdministrator +from aiogram.types import ChatMemberAdministrator, ChatMemberOwner, Message -from ocab_core.modules_system.public_api import get_module, register_router, log +from ocab_core.modules_system.public_api import get_module, log, register_router if TYPE_CHECKING: from ocab_modules.standard.filters import ChatIDFilter as IChatIDFilter @@ -11,41 +12,40 @@ if TYPE_CHECKING: try: ChatIDFilter: "type[IChatIDFilter]" = get_module("standard.filters", "ChatIDFilter") FILTERS_MODULE_LOADED = True -except Exception as e: +except Exception: FILTERS_MODULE_LOADED = False pass try: register_command = get_module("standard.command_helper", "register_command") COMMAND_HELPER_MODULE_LOADED = True -except Exception as e: +except Exception: COMMAND_HELPER_MODULE_LOADED = False pass + def can_moderate(admin: ChatMemberOwner | ChatMemberAdministrator) -> bool: if isinstance(admin, ChatMemberOwner): return True - return ( - admin.user.is_bot == False and - ( - admin.can_delete_messages and - admin.can_restrict_members - ) + return admin.user.is_bot is False and ( + admin.can_delete_messages and admin.can_restrict_members ) + async def report(message: Message): try: if message.reply_to_message is None: - await message.reply("Пожалуйста, используйте команду /report в ответ на сообщение, которое вы хотите отметить как спам.") - return + await message.reply( + "Пожалуйста, используйте команду /report в ответ на сообщение" + ", которое вы хотите отметить как спам." + ) + return admins = await message.chat.get_administrators() - + admin_usernames = [ - admin.user.mention_html() - for admin in admins - if can_moderate(admin) + admin.user.mention_html() for admin in admins if can_moderate(admin) ] if admin_usernames: ping_message = "⚠️ Внимание, жалоба на спам! " + ", ".join(admin_usernames) @@ -66,4 +66,4 @@ async def module_init(): if COMMAND_HELPER_MODULE_LOADED: register_command = get_module("standard.command_helper", "register_command") - register_command("report", "Пожаловаться на спам") \ No newline at end of file + register_command("report", "Пожаловаться на спам")