feat: log presence, read receipts, group leaves, links, profiles, stories
This commit is contained in:
1 parent
bfd16ab02c
commit
bcb94b6474
31 files changed
+1298
-19
No files matched your search
@@ -0,0 +1,91 @@
|
||||
from pyrogram import Client, enums
|
||||
from pyrogram.types import Message
|
||||
|
||||
from userbot.modules.avatars import capture_avatar
|
||||
from userbot.modules.capture.context import CaptureContext
|
||||
from userbot.modules.capture.message import sender_id
|
||||
from userbot.modules.groups import repository
|
||||
|
||||
|
||||
async def capture_service(
|
||||
client: Client, message: Message, ctx: CaptureContext
|
||||
) -> None:
|
||||
if message.service is None or message.chat is None or message.date is None:
|
||||
return
|
||||
chat_id = message.chat.id or 0
|
||||
actor = sender_id(message)
|
||||
ts = message.date
|
||||
service = message.service
|
||||
|
||||
if service is enums.MessageServiceType.NEW_CHAT_TITLE:
|
||||
await repository.insert_chat_history(
|
||||
ctx.pool,
|
||||
ctx.account_id,
|
||||
chat_id,
|
||||
message.id,
|
||||
"title",
|
||||
message.new_chat_title,
|
||||
None,
|
||||
actor,
|
||||
ts,
|
||||
str(message),
|
||||
)
|
||||
elif service is enums.MessageServiceType.NEW_CHAT_PHOTO:
|
||||
photo = message.new_chat_photo
|
||||
unique_id = photo.file_unique_id if photo else None
|
||||
await repository.insert_chat_history(
|
||||
ctx.pool,
|
||||
ctx.account_id,
|
||||
chat_id,
|
||||
message.id,
|
||||
"photo",
|
||||
None,
|
||||
unique_id,
|
||||
actor,
|
||||
ts,
|
||||
str(message),
|
||||
)
|
||||
if photo is not None and unique_id is not None:
|
||||
await capture_avatar(
|
||||
client, ctx, chat_id, "chat", photo.file_id, unique_id, str(message)
|
||||
)
|
||||
elif service is enums.MessageServiceType.DELETE_CHAT_PHOTO:
|
||||
await repository.insert_chat_history(
|
||||
ctx.pool,
|
||||
ctx.account_id,
|
||||
chat_id,
|
||||
message.id,
|
||||
"photo_deleted",
|
||||
None,
|
||||
None,
|
||||
actor,
|
||||
ts,
|
||||
str(message),
|
||||
)
|
||||
elif service is enums.MessageServiceType.NEW_CHAT_MEMBERS:
|
||||
for member in message.new_chat_members or []:
|
||||
await repository.insert_membership(
|
||||
ctx.pool,
|
||||
ctx.account_id,
|
||||
chat_id,
|
||||
message.id,
|
||||
member.id,
|
||||
"join",
|
||||
actor,
|
||||
ts,
|
||||
str(message),
|
||||
)
|
||||
elif service is enums.MessageServiceType.LEFT_CHAT_MEMBER:
|
||||
member = message.left_chat_member
|
||||
if member is not None:
|
||||
await repository.insert_membership(
|
||||
ctx.pool,
|
||||
ctx.account_id,
|
||||
chat_id,
|
||||
message.id,
|
||||
member.id,
|
||||
"leave",
|
||||
actor,
|
||||
ts,
|
||||
str(message),
|
||||
)
|
||||
Reference in new issue
Block a user