mirror of
https://github.com/Mayuri-Chan/pyrofork.git
synced 2025-12-29 12:04:51 +00:00
pyrofork: Add get_message_read_participants method
Signed-off-by: wulan17 <wulan17@nusantararom.org>
This commit is contained in:
parent
a6b69228e8
commit
95eba2ce77
5 changed files with 119 additions and 0 deletions
|
|
@ -197,6 +197,7 @@ def pyrogram_api():
|
|||
delete_scheduled_messages
|
||||
get_available_effects
|
||||
get_messages
|
||||
get_message_read_participants
|
||||
get_scheduled_messages
|
||||
get_media_group
|
||||
get_chat_history
|
||||
|
|
@ -537,6 +538,7 @@ def pyrogram_api():
|
|||
ChatWallpaper
|
||||
ContactRegistered
|
||||
GiftCode
|
||||
ReadParticipant
|
||||
ScreenshotTaken
|
||||
Wallpaper
|
||||
WallpaperSettings
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ from .get_discussion_replies import GetDiscussionReplies
|
|||
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
|
||||
|
|
@ -85,6 +86,7 @@ class Messages(
|
|||
GetAvailableEffects,
|
||||
GetMediaGroup,
|
||||
GetMessages,
|
||||
GetMessageReadParticipants,
|
||||
GetScheduledMessages,
|
||||
SendAudio,
|
||||
SendChatAction,
|
||||
|
|
|
|||
57
pyrogram/methods/messages/get_message_read_participants.py
Normal file
57
pyrogram/methods/messages/get_message_read_participants.py
Normal file
|
|
@ -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,
|
||||
msg_id=message_id
|
||||
)
|
||||
)
|
||||
for read_participant in r:
|
||||
yield await types.ReadParticipant._parse(
|
||||
client=self,
|
||||
read_participant=read_participant
|
||||
)
|
||||
|
|
@ -43,6 +43,7 @@ from .photo import Photo
|
|||
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
|
||||
|
|
@ -116,6 +117,7 @@ __all__ = [
|
|||
"MessageReactionCountUpdated",
|
||||
"MessageReactor",
|
||||
"MessageStory",
|
||||
"ReadParticipant",
|
||||
"ScreenshotTaken",
|
||||
"Story",
|
||||
"StoryDeleted",
|
||||
|
|
|
|||
56
pyrogram/types/messages_and_media/read_participant.py
Normal file
56
pyrogram/types/messages_and_media/read_participant.py
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
# 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"
|
||||
) -> "ReadParticipant":
|
||||
return ReadParticipant(
|
||||
client=client,
|
||||
user_id=await client.get_users(read_participant.user_id),
|
||||
date=utils.timestamp_to_datetime(read_participant.date)
|
||||
)
|
||||
Loading…
Reference in a new issue