from __future__ import annotations from db import User from pyrogram import filters from pyrogram.enums import MessageMediaType from pyrogram.types import CallbackQuery, Message from utils.client import MyClient from utils.db import get_user, get_user_query from utils.i18n import tr as _ from utils.settings import upset_setting async def _is_open(*args) -> bool: # noqa: ANN002 mode = await upset_setting("MAINTENANCE_MODE") return not mode is_open = filters.create(_is_open) async def _can_send_task_handler( user: User, update: Message | CallbackQuery, take_point: bool = False ) -> bool: can_send_task, points_used = await user.can_send_task(take_point) if points_used: func = update.message.reply_text if isinstance(update, CallbackQuery) else update.reply_text await func(_("video.lost_points", locale=user.language)) return can_send_task async def _can_send_task( client: MyClient, __, # noqa: ANN001 update: Message | CallbackQuery, ) -> bool: if isinstance(update, Message): user = await get_user(update) else: user = await get_user_query(update) return await _can_send_task_handler(user, update) can_send_task = filters.create(_can_send_task) async def _is_admin(_, __, update: Message) -> bool: # noqa: ANN001 user = await User.find_one(User.user_id == update.from_user.id) if user: return user.is_admin return False is_admin = filters.create(_is_admin) async def _is_banned(_, __, update: Message) -> bool: # noqa: ANN001 user = await User.find_one(User.user_id == update.from_user.id) if user: return user.is_banned return False is_banned = filters.create(_is_banned) async def _is_video(_, __, msg: Message) -> bool: # noqa: ANN001 match msg.media: case MessageMediaType.VIDEO | MessageMediaType.ANIMATION | MessageMediaType.DOCUMENT: return True case _: return False is_video = filters.create(_is_video)