Skip to content

Commit

Permalink
pyrofork: Add get_message_read_participants method
Browse files Browse the repository at this point in the history
Signed-off-by: wulan17 <wulan17@nusantararom.org>
  • Loading branch information
wulan17 committed Oct 7, 2024
1 parent ea3fb95 commit 733bac0
Show file tree
Hide file tree
Showing 5 changed files with 120 additions and 0 deletions.
2 changes: 2 additions & 0 deletions compiler/docs/compiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,7 @@ def get_title_list(s: str) -> list:
delete_scheduled_messages
get_available_effects
get_messages
get_message_read_participants
get_scheduled_messages
get_media_group
get_chat_history
Expand Down Expand Up @@ -537,6 +538,7 @@ def get_title_list(s: str) -> list:
ChatWallpaper
ContactRegistered
GiftCode
ReadParticipant
ScreenshotTaken
Wallpaper
WallpaperSettings
Expand Down
2 changes: 2 additions & 0 deletions pyrogram/methods/messages/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
from .get_discussion_replies_count import GetDiscussionRepliesCount
from .get_media_group import GetMediaGroup
from .get_messages import GetMessages
from .get_message_read_participants import GetMessageReadParticipants
from .get_scheduled_messages import GetScheduledMessages
from .read_chat_history import ReadChatHistory
from .retract_vote import RetractVote
Expand Down Expand Up @@ -85,6 +86,7 @@ class Messages(
GetAvailableEffects,
GetMediaGroup,
GetMessages,
GetMessageReadParticipants,
GetScheduledMessages,
SendAudio,
SendChatAction,
Expand Down
57 changes: 57 additions & 0 deletions pyrogram/methods/messages/get_message_read_participants.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Pyrofork - Telegram MTProto API Client Library for Python
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
#
# This file is part of Pyrofork.
#
# Pyrofork is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Pyrofork is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.

import pyrogram

from pyrogram import types
from typing import Union

class GetMessageReadParticipants:
async def get_message_read_participants(
self: "pyrogram.Client",
chat_id: Union[int, str],
message_id: int
):
"""Get the list of users who have read a message.
.. include:: /_includes/usable-by/users.rst
Parameters:
chat_id (``int`` | ``str``):
Unique identifier (int) or username (str) of the target chat.
You can also use chat public link in form of *t.me/<username>* (str).
message_id (``int``):
Unique identifier of the target message.
Returns:
``AsyncGenerator``: On success, an async generator yielding :obj:`~pyrogram.types.ReadParticipant` objects is returned.
"""

peer = await self.resolve_peer(chat_id)
r = await self.invoke(
pyrogram.raw.functions.messages.GetMessageReadParticipants(
peer=peer,
id=message_id
)
)
for read_participant in r:
yield await types.ReadParticipant._parse(
client=self,
read_participant=read_participant
)
2 changes: 2 additions & 0 deletions pyrogram/types/messages_and_media/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
from .poll import Poll
from .poll_option import PollOption
from .reaction import Reaction
from .read_participant import ReadParticipant
from .screenshot_taken import ScreenshotTaken
from .sticker import Sticker
from .stickerset import StickerSet
Expand Down Expand Up @@ -116,6 +117,7 @@
"MessageReactionCountUpdated",
"MessageReactor",
"MessageStory",
"ReadParticipant",
"ScreenshotTaken",
"Story",
"StoryDeleted",
Expand Down
57 changes: 57 additions & 0 deletions pyrogram/types/messages_and_media/read_participant.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# PyroFork - Telegram MTProto API Client Library for Python
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
#
# This file is part of PyroFork.
#
# PyroFork is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# PyroFork is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PyroFork. If not, see <http://www.gnu.org/licenses/>.

import pyrogram
from pyrogram import raw, types, utils
from datetime import datetime
from ..object import Object

class ReadParticipant(Object):
"""Contains information about a read participant.
Parameters:
user (:obj:`~pyrogram.types.User`):
User who read the message.
date (:py:obj:`~datetime.datetime`):
Date the message was read.
"""

def __init__(
self,
*,
client: "pyrogram.Client" = None,
user_id: "pyrogram.types.User",
date: "datetime"
):
super().__init__(client)

self.user = user_id
self.date = date

@staticmethod
async def _parse(
client,
read_participant: "raw.base.ReadParticipantDate",
users: dict
) -> "ReadParticipant":
ReadParticipant(
client=client,
user_id=await client.get_users(read_participant.user_id),
date=utils.timestamp_to_datetime(read_participant.date)
)

0 comments on commit 733bac0

Please sign in to comment.