добавлена фильтрация по чатам

This commit is contained in:
Maxim Slipenko 2024-08-13 23:37:34 +03:00
parent 9ca32cfa28
commit c01dbcbe6b

View File

@ -13,9 +13,6 @@ from ocab_core.modules_system.public_api import get_module, log, register_router
from .utils import MultiKeyDict, get_plural_form, key_from_poll, key_from_user_chat from .utils import MultiKeyDict, get_plural_form, key_from_poll, key_from_user_chat
from .verifications_methods.base import BaseTask, VerificationCallback from .verifications_methods.base import BaseTask, VerificationCallback
# from .verifications_methods.simple import SimpleInlineButtonsMethod
# from .verifications_methods.iamhuman import IAmHumanButton
from .verifications_methods.math import MathInlineButtonsTask, MathPollTask from .verifications_methods.math import MathInlineButtonsTask, MathPollTask
from .verifications_methods.question import QuestionInlineButtonsTask, QuestionPollTask from .verifications_methods.question import QuestionInlineButtonsTask, QuestionPollTask
from .verifications_methods.simple import ( from .verifications_methods.simple import (
@ -24,7 +21,18 @@ from .verifications_methods.simple import (
) )
from .verifications_methods.utils import user_mention from .verifications_methods.utils import user_mention
# from .verifications_methods.question import QuestionButtonsVerification if TYPE_CHECKING:
from ocab_modules.standard.config import IConfig
from ocab_modules.standard.filters import ChatIDFilter as IChatIDFilter
config: "IConfig" = get_module("standard.config", "config")
try:
ChatIDFilter: "type[IChatIDFilter]" = get_module("standard.filters", "ChatIDFilter")
FILTERS_MODULE_LOADED = True
except Exception:
FILTERS_MODULE_LOADED = False
pass
all_tasks = [ all_tasks = [
MathInlineButtonsTask, MathInlineButtonsTask,
@ -69,9 +77,6 @@ class TaskManager:
verification_tasks = MultiKeyDict() verification_tasks = MultiKeyDict()
last_success = {} last_success = {}
if TYPE_CHECKING:
from ocab_modules.standard.config import IConfig
async def new_member_handler(event: ChatMemberUpdated, bot: Bot): async def new_member_handler(event: ChatMemberUpdated, bot: Bot):
# НЕ СРАБОТАЕТ, ЕСЛИ ЧЕЛОВЕК УЖЕ ОГРАНИЧЕН В ПРАВАХ (RESTRICTED) # НЕ СРАБОТАЕТ, ЕСЛИ ЧЕЛОВЕК УЖЕ ОГРАНИЧЕН В ПРАВАХ (RESTRICTED)
@ -332,14 +337,23 @@ async def module_init():
router = Router() router = Router()
router.chat_member(ChatMemberUpdatedFilter(JOIN_TRANSITION))(new_member_handler) common_filters_pre = []
router.chat_member(ChatMemberUpdatedFilter(LEAVE_TRANSITION))(left_member_handler)
router.callback_query(VerificationCallback.filter())( if FILTERS_MODULE_LOADED:
common_filters_pre.append(ChatIDFilter())
router.chat_member(*common_filters_pre, ChatMemberUpdatedFilter(JOIN_TRANSITION))(
new_member_handler
)
router.chat_member(*common_filters_pre, ChatMemberUpdatedFilter(LEAVE_TRANSITION))(
left_member_handler
)
router.callback_query(*common_filters_pre, VerificationCallback.filter())(
handle_inline_button_verification handle_inline_button_verification
) )
router.poll_answer()(handle_poll_verification)
# router.message()(handle_input_verification) # Нельзя применить ChatIDFilter из-за отстутсвия id чата
router.poll_answer()(handle_poll_verification)
register_router(router) register_router(router)