Commit 0a7a1f5

benny-dou <60535774+benny-dou@users.noreply.github.com>
2026-01-25 13:28:16
feat(info): add `/info` command to show message details
1 parent 9c17938
src/messages/details.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import contextlib
+
+from ffmpeg.asyncio import FFmpeg
+from pyrogram.client import Client
+from pyrogram.types import Message
+
+from config import PREFIX
+from messages.sender import send2tg
+from messages.utils import equal_prefix
+
+
+async def show_msg_info(client: Client, message: Message, **kwargs):
+    """Show message info."""
+    if not equal_prefix(message.text, prefix=PREFIX.MSG_INFO):
+        return
+    if not message.reply_to_message:
+        return
+    message = message.reply_to_message
+    await send2tg(client, message, texts=str(message), **kwargs)
+
+
+async def get_ffmpeg_version() -> str:
+    ffmpeg = FFmpeg().option("version")
+    with contextlib.suppress(Exception):
+        res = await ffmpeg.execute()
+        if isinstance(res, bytes):
+            lines = res.decode("utf-8").splitlines()
+            return lines[0].split(" ")[2]
+    return ""
src/messages/main.py
@@ -14,6 +14,7 @@ from config import FAVORITE, PREFIX, PROXY
 from danmu.entrypoint import query_danmu
 from database.database import del_db
 from history.query import query_chat_history
+from messages.details import show_msg_info
 from messages.help import social_media_help
 from messages.modify import parse_kwargs
 from messages.parser import parse_msg
@@ -146,6 +147,7 @@ async def process_message(
     if version:
         await get_bot_version(client, message, **kwargs)
 
+    await show_msg_info(client, message, **kwargs)
     await preview_social_media(client, message, **kwargs)
 
 
src/messages/parser.py
@@ -109,7 +109,7 @@ def parse_msg(message: Message, *, silent: bool = False, verbose: bool = False,
         "media_group_id": int(media_group_id),
         "is_bot": bool(is_bot),
         "text": str(text),
-        "html": getattr(text, "html", ""),  # type: ignore
+        "html": getattr(text, "html", ""),
         "full_name": str(full_name),
         "handle": str(handle),
         "datetime": dt,
src/config.py
@@ -111,6 +111,7 @@ class PREFIX:
     FFPROBE = os.getenv("PREFIX_FFPROBE", "/ffprobe").lower()
     WATERMARK = os.getenv("PREFIX_WATERMARK", "/wm, /watermark").lower()
     VERSION = os.getenv("PREFIX_VERSION", "/version").lower()
+    MSG_INFO = os.getenv("PREFIX_MSG_INFO", "/info").lower()
 
 
 class API:
src/permission.py
@@ -99,7 +99,7 @@ def global_permissions() -> dict:
     for key in envs:
         value = os.environ[key]
         option = key.removeprefix("GLOBAL_").lower()
-        permission[option] = to_bool(value)  # type: ignore
+        permission[option] = to_bool(value)
         logger.warning(f"Set `{option}` to {to_bool(value)}")
     logger.success(f"Global permission: {permission}")
     return permission
@@ -233,7 +233,7 @@ def check_service(cid: int | str, ctype: str) -> dict:
     for key in envs:
         value = os.environ[key]
         option = key.removeprefix(f"SET_{cid}_").lower()
-        permission[option] = to_bool(value)  # type: ignore
+        permission[option] = to_bool(value)
         logger.warning(f"Set `{option}` for chat={cid} to {to_bool(value)}")
     logger.success(f"Permission for chat={cid}: {permission}")
     return permission