from datetime import datetime from pytz import timezone from pyrogram.errors import DocumentInvalid from pyrogram.raw.functions.users import GetUsers from pyrogram.raw.types import InputUserSelf, InputUserFromMessage from pyrogram.raw.types import EmojiStatus, EmojiStatusEmpty, EmojiStatusUntil from pagermaid.listener import listener from pagermaid.enums import Client, Message async def get_status_emoji(bot: Client, message: Message = None) -> str: try: peer = InputUserFromMessage( peer=(await bot.resolve_peer(message.chat.id)), msg_id=message.id, user_id=message.from_user.id, ) if message else InputUserSelf() req = await bot.invoke(GetUsers(id=[peer])) emoji_status = req[0].emoji_status if not emoji_status or isinstance(emoji_status, EmojiStatusEmpty): return "你还没有设置自定义 emoji 状态" if isinstance(emoji_status, EmojiStatus): return f"你的自定义 emoji 状态是 🔥" if isinstance(emoji_status, EmojiStatusUntil): time = datetime.strftime( datetime.fromtimestamp( emoji_status.until, timezone("Asia/Shanghai") ), "%Y-%m-%d %H:%M:%S" ) return f"你的自定义 emoji 状态是 🔥 (有效期至:{time})" except DocumentInvalid: return "无法获取自定义 emoji 状态,可能是状态已过期。" except Exception as e: raise FileNotFoundError from e @listener(command="get_status", need_admin=True, description="获取自己或者他人的大会员自定义 emoji 状态") async def get_emoji_status(bot: Client, message: Message): """ 获取自己或者他人的大会员自定义 emoji 状态 """ if not message.reply_to_message_id: me = bot.me or await bot.get_me() if not me.is_premium: return await message.edit("你好像不是大会员。。。") try: string = await get_status_emoji(bot, message.reply_to_message) except FileNotFoundError: string = "获取自定义 emoji 状态失败。" await message.edit(string)