PagerMaid-Pyro/pagermaid/modules/message.py
xtaodada a941308d17
Some checks failed
Docker Dev Build / docker build and publish (push) Failing after 13s
Docker Build / docker build and publish (push) Failing after 11s
🔖 Update to v1.5.0
这是一项破坏性变更,目录结构进行了重组,无核心功能变化
2024-09-28 22:01:40 +08:00

193 lines
7.2 KiB
Python

""" Pagermaid message plugin. """
from pyrogram.enums import ChatType
from pyrogram.errors import Forbidden, FloodWait
from pagermaid.config import Config
from pagermaid.enums import Message
from pagermaid.listener import listener
from pagermaid.utils import lang
from pagermaid.utils.bot_utils import log
@listener(is_plugin=False, outgoing=True, command="id", description=lang("id_des"))
async def userid(message: Message):
"""Query the UserID of the sender of the message you replied to."""
reply = message.reply_to_message
text = f"Message ID: `{str(message.id)}" + "`\n\n"
text += "**Chat**\nid:`" + str(message.chat.id) + "`\n"
msg_from = message.chat
if msg_from.type == ChatType.PRIVATE:
try:
text += f"first_name: `{msg_from.first_name}" + "`\n"
except TypeError:
text += "**死号**\n"
if msg_from.last_name:
text += f"last_name: `{msg_from.last_name}" + "`\n"
if msg_from.username:
text += f"username: @{msg_from.username}" + "\n"
if msg_from.type in [ChatType.SUPERGROUP, ChatType.CHANNEL]:
text += f"title: `{msg_from.title}" + "`\n"
if message.topic:
text += f"topic title: `{message.topic.title}`\n"
text += f"topic ID: `{message.topic.id}`\n"
try:
if msg_from.username:
text += f"username: @{msg_from.username}" + "\n"
except AttributeError:
return await message.edit(lang("leave_not_group"))
text += f"protected: `{str(msg_from.has_protected_content)}" + "`\n"
if reply:
text += "\n" + lang("id_hint") + "\nMessage ID: `" + str(reply.id) + "`"
if reply.photo and reply.photo.file_id:
text += "\nphoto_id: `" + str(reply.photo.file_id) + "`"
if reply.video and reply.video.file_id:
text += "\nvideo_id: `" + str(reply.video.file_id) + "`"
if reply.document and reply.document.file_id:
text += "\ndocument_id: `" + str(reply.document.file_id) + "`"
try:
text += "\n\n**User**\nid: `" + str(reply.from_user.id) + "`"
if reply.from_user.is_bot:
text += f"\nis_bot: {lang('id_is_bot_yes')}"
try:
text += "\nfirst_name: `" + reply.from_user.first_name + "`"
except TypeError:
text += f"\n**{lang('id_da')}**"
if reply.from_user.last_name:
text += "\nlast_name: `" + reply.from_user.last_name + "`"
if reply.from_user.username:
text += "\nusername: @" + reply.from_user.username
if reply.from_user.dc_id:
text += "\ndc: `" + str(reply.from_user.dc_id) + "`"
except AttributeError:
pass
try:
text += "\n\n**Chat**\nid: `" + str(reply.sender_chat.id) + "`"
text += "\ntitle: `" + reply.sender_chat.title + "`"
if reply.sender_chat.username:
text += "\nusername: @" + reply.sender_chat.username
except AttributeError:
pass
if reply.forward_from_chat:
text += (
"\n\n**Forward From Channel**\n"
"id: `"
+ str(reply.forward_from_chat.id)
+ "`\ntitle: `"
+ reply.forward_from_chat.title
+ "`"
)
if reply.forward_from_chat.username:
text += "\nusername: @" + reply.forward_from_chat.username
if reply.forward_from_message_id:
text += "\nmessage_id: `" + str(reply.forward_from_message_id) + "`"
if reply.forward_sender_name:
text += "\npost_author: `" + reply.forward_sender_name + "`"
elif reply.forward_from:
text += (
"\n\n**Forward From User**\nid: `" + str(reply.forward_from.id) + "`"
)
try:
if reply.forward_from.is_bot:
text += f"\nis_bot: {lang('id_is_bot_yes')}"
try:
text += "\nfirst_name: `" + reply.forward_from.first_name + "`"
except TypeError:
text += f"\n**{lang('id_da')}**"
if reply.forward_from.last_name:
text += "\nlast_name: `" + reply.forward_from.last_name + "`"
if reply.forward_from.username:
text += "\nusername: @" + reply.forward_from.username
if reply.forward_from.dc_id:
text += "\ndc: `" + str(reply.forward_from.dc_id) + "`"
except AttributeError:
pass
elif reply.forward_sender_name:
text += (
"\n\n**Forward From User**\nsender_name: `"
+ str(reply.forward_sender_name)
+ "`"
)
await message.edit(text)
@listener(
is_plugin=False,
outgoing=True,
command="uslog",
description=lang("uslog_des"),
parameters="<string>",
)
async def uslog(message: Message):
"""Forwards a message into log group"""
if Config.LOG:
if message.reply_to_message:
reply_msg = message.reply_to_message
await reply_msg.forward(Config.LOG_ID)
elif message.arguments:
await log(message.arguments)
else:
return await message.edit(lang("arg_error"))
await message.edit(lang("uslog_success"))
else:
await message.edit(lang("uslog_log_disable"))
@listener(
is_plugin=False,
outgoing=True,
command="log",
description=lang("log_des"),
parameters="<string>",
)
async def logging(message: Message):
"""Forwards a message into log group"""
if Config.LOG:
if message.reply_to_message:
reply_msg = message.reply_to_message
await reply_msg.forward(Config.LOG_ID)
elif message.arguments:
await log(message.arguments)
else:
return await message.edit(lang("arg_error"))
await message.safe_delete()
else:
await message.edit(lang("uslog_log_disable"))
@listener(
is_plugin=False,
outgoing=True,
command="re",
description=lang("re_des"),
parameters=lang("re_parameters"),
)
async def re(message: Message):
"""Forwards a message into this group"""
if reply := message.reply_to_message:
if message.arguments == "":
num = 1
else:
try:
num = int(message.arguments)
if num > 100:
await message.edit(lang("re_too_big"))
except Exception:
return await message.edit(lang("re_arg_error"))
await message.safe_delete()
for _ in range(num):
try:
if not message.chat.has_protected_content:
await reply.forward(
reply.chat.id, message_thread_id=reply.message_thread_id
)
else:
await reply.copy(
reply.chat.id,
message_thread_id=message.message_thread_id,
)
except (Forbidden, FloodWait, Exception):
return
else:
await message.edit(lang("not_reply"))