from pyrogram import Client, filters from pyrogram.types import CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup from utils import filters as myfilters from utils.client import MyClient from utils.db import Depends, User, get_user_query, inject from utils.i18n import tr as _ from utils.messages import message_handler @Client.on_callback_query(filters.regex("cp_latest-users") & myfilters.is_admin) @inject async def latest_users( client: MyClient, query: CallbackQuery, user: User = Depends(get_user_query) ) -> None: keyboard = InlineKeyboardMarkup( [ [InlineKeyboardButton(_("common.back", locale=user.language), "cp_manage-users")], ] ) users = await User.find().sort(("created_at", -1)).limit(10).to_list() msg = "\n".join( map( lambda u: _( "cp.user_joined_since", locale=user.language, user_id=u.user_id, joined_since=u.joined_since(user.language), ) + (" (🚫) " if u.is_banned else " ") + f"[📨](tg://openmessage?user_id={u.user_id})", users, ) ) await message_handler( query.edit_message_text, _("cp.latest_users", locale=user.language) + f":\n{msg}", reply_markup=keyboard, )