Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 41 additions & 96 deletions pyrogram/types/messages_and_media/story.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,11 @@ def __init__(

@staticmethod
def _parse_story_item(
client,
story_item: "raw.types.StoryItem"
):
client: "pyrogram.Client",
story_item: "raw.types.StoryItem",
chat: "types.Chat" = None,
story_id: int = None
) -> "Story":
date = None
expire_date = None
media = None
Expand All @@ -152,7 +154,9 @@ def _parse_story_item(
skipped = None
deleted = None

if isinstance(story_item, raw.types.StoryItemDeleted):
if story_item is None:
pass
elif isinstance(story_item, raw.types.StoryItemDeleted):
deleted = True
elif isinstance(story_item, raw.types.StoryItemSkipped):
skipped = True
Expand Down Expand Up @@ -181,22 +185,27 @@ def _parse_story_item(
types.Reaction._parse_count(client, reaction)
for reaction in getattr(story_item.views, "reactions", [])
] or None
return (
date,
expire_date,
media,
has_protected_content,
photo,
video,
edited,
pinned,
caption,
caption_entities,
views,
forwards,
reactions,
skipped,
deleted

return Story(
client=client,
_raw=story_item,
id=story_id or getattr(story_item, "id", None),
chat=chat,
date=date,
expire_date=expire_date,
media=media,
has_protected_content=has_protected_content,
photo=photo,
video=video,
edited=edited,
pinned=pinned,
caption=caption,
caption_entities=caption_entities,
views=views,
forwards=forwards,
reactions=reactions,
skipped=skipped,
deleted=deleted
)

@staticmethod
Expand All @@ -211,26 +220,9 @@ async def _parse(
story_id = None
chat = None

rawupdate = None

date = None
expire_date = None
media = None
has_protected_content = None
photo = None
video = None
edited = None
pinned = None
caption = None
caption_entities = None
views = None
forwards = None
reactions = None
skipped = None
deleted = None
story_item = None

if story_media:
rawupdate = story_media

if story_media.peer:
raw_peer_id = utils.get_raw_peer_id(story_media.peer)
Expand All @@ -239,9 +231,10 @@ async def _parse(
else:
chat = types.Chat._parse_chat(client, chats.get(raw_peer_id))
story_id = getattr(story_media, "id", None)


story_item = getattr(story_media, "story", None)

if reply_story:
rawupdate = reply_story

if reply_story.peer:
raw_peer_id = utils.get_raw_peer_id(reply_story.peer)
Expand All @@ -250,7 +243,7 @@ async def _parse(
else:
chat = types.Chat._parse_chat(client, chats.get(raw_peer_id))
story_id = getattr(reply_story, "story_id", None)

if story_id and not client.me.is_bot:
try:
story_item = (
Expand All @@ -261,29 +254,11 @@ async def _parse(
)
)
).stories[0]

except (RPCError, IndexError):
pass
else:
(
date,
expire_date,
media,
has_protected_content,
photo,
video,
edited,
pinned,
caption,
caption_entities,
views,
forwards,
reactions,
skipped,
deleted
) = Story._parse_story_item(client, story_item)


if story_update:
rawupdate = story_update

raw_peer_id = utils.get_raw_peer_id(story_update.peer)
if isinstance(story_update.peer, raw.types.PeerUser):
Expand All @@ -292,44 +267,14 @@ async def _parse(
chat = types.Chat._parse_chat(client, chats.get(raw_peer_id))

story_id = getattr(story_update.story, "id", None)
(
date,
expire_date,
media,
has_protected_content,
photo,
video,
edited,
pinned,
caption,
caption_entities,
views,
forwards,
reactions,
skipped,
deleted
) = Story._parse_story_item(client, story_update.story)

return Story(
story_item = getattr(story_update.story, "story", None)

return Story._parse_story_item(
client=client,
_raw=rawupdate,
id=story_id,
story_item=story_item,
chat=chat,
date=date,
expire_date=expire_date,
media=media,
has_protected_content=has_protected_content,
photo=photo,
video=video,
edited=edited,
pinned=pinned,
caption=caption,
caption_entities=caption_entities,
views=views,
forwards=forwards,
reactions=reactions,
skipped=skipped,
deleted=deleted
story_id=story_id
)

async def react(
Expand Down