main
 1#!/usr/bin/env python
 2# -*- coding: utf-8 -*-
 3from loguru import logger
 4from pyrogram.client import Client
 5from pyrogram.types import Message
 6
 7from asr.voice_recognition import voice_to_text
 8from config import cache
 9from custom.config import ACCOUNT_NAME, CHANNEL_CYF_BAK, GROUP_67373, USER_CYF
10from messages.parser import parse_msg
11from utils import to_int
12
13
14async def message_backup(client: Client, message: Message):
15    async def copy_msg(target_cid: int | str, url: str | None = None):
16        info = parse_msg(message, silent=True)
17        url = url or info["message_url"]
18        if info["mtype"] == "voice":
19            await voice_to_text(client, message, target_chat=to_int(target_cid), reply_msg_id=-1, asr_need_prefix=False)
20        elif message.media_group_id:
21            if not cache.get(f"{message.media_group_id}"):
22                cache.set(f"{message.media_group_id}", "1", ttl=120)
23                caption = f"{info['text']}\n{url}".strip()
24                await client.copy_media_group(chat_id=to_int(target_cid), from_chat_id=message.chat.id, message_id=message.id, captions=caption)
25        elif message.media:
26            caption = f"{info['text']}\n{url}".strip()
27            await client.copy_message(chat_id=to_int(target_cid), from_chat_id=message.chat.id, message_id=message.id, caption=caption)
28        elif info["entity_urls"]:
29            text = f"{info['text']}\n{url}".strip()
30            await client.send_message(chat_id=to_int(target_cid), text=text)
31        else:
32            text = f"[{info['text']}]({url})".strip()
33            await client.send_message(chat_id=to_int(target_cid), text=text)
34
35    if message.chat.id == GROUP_67373 and message.from_user.id == USER_CYF and ACCOUNT_NAME == "xiaohao":
36        info = parse_msg(message, silent=True)
37        url = f"https://t.me/c/1744444199/{message.id}"
38        logger.success(info["summary"])
39        await copy_msg(CHANNEL_CYF_BAK, url)
40
41    # 风哥
42    if message.chat.id == 2049194302 and message.from_user.id == 2049194302:
43        info = parse_msg(message, silent=True)
44        logger.success(info["summary"])
45        await copy_msg(-1002465020912)  # 开发专用频道