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) # 开发专用频道